Şu anda this eğitimini takip ediyorum. Aşağıdaki kodda mapStateToProps
karıştığı bir gerginliği biraz isabet ettik: pair
pervane gelen iki düğme işlemek gerekiyorduRedux durumu undefined mapStateToProps
import React from 'react';
import Vote from './Vote';
import Winner from './winner';
const Voting = ({pair,vote,hasVoted,winner}) =>
<div>
{winner ? <Winner winner={winner}/> :
<Vote pair={pair} vote={vote} hasVoted={hasVoted}/>
}
</div>
export default Voting;
:
İşteimport React from 'react';
import Voting from './voting';
import {connect} from 'react-redux';
const mapStateToProps = (state) => {
return {
pair: state.getIn(['vote','pair']),
winner: state.get('winner')
};
}
const VotingContainer = connect(mapStateToProps)(Voting);
export default VotingContainer;
aktardıktan Oy bileşenidir. vote
prop, tıklatıldığında çalıştırılacak bir işlevdir, hasVoted
düğmelerini devre dışı bırakır ve kazanan, yalnızca kazanan bileşeni gösterildiği gibi oluşturur.
Map({
vote:{
pair:List.of('Movie A','Movie B')
}
});
Onun yerine devlet state.getIn hattında tanımlanmamış olduğunu belirten bir hata alıyorum:
devlet şöyle bir immutableJS haritası olması bekleniyor.
devlet ayarı kod endeksinde ise:
const store = createStore(reducer);
const socket = io(document.location.protocol + '//' + document.location.hostname + ':8090');
socket.on('state', state => store.dispatch({
type: 'SET_STATE',
state
}));
ben ayarladıktan sonra store.getState()
açmış ve beklendiği gibi ama mapStateToProps
içinde undefined
. Ayrıca, durum değişkenini yukarıdaki bağlamda da kaydettim ve beklendiği gibi.
Ben de normalde devlet kurmak ve şaşırtıcı işler !:
store.dispatch({
type: 'SET_STATE',
state: {
vote: {
pair: ['Movie A', 'Movie B']
}
}
});
yukarıdaki devletin değeri
Son olarak burada redüktör nasıl göründüğü ve sunucudan alınan tam olarak ne gibi:
import React from 'react';
import {Map, fromJS} from 'immutable';
const reducer = (state = Map(), action) => {
switch (action.type) {
case 'SET_STATE':
return state.merge(action.state);
}
}
export default reducer;
Neyi yanlış yapıyorum?
DÜZENLEME: store.dispatch()
'dan sonra mapStateToProps
'un çağrılmadığını fark ettim. mapStateToProps
'un olası nedenleri nedeniyle docs'dan geçtim ve bunlardan biri değil.
çözecektir varsayılan deyimi ekleme
mağaza başlangıç durumu olarak döndürülür i redux-logger' 'eklemenizi tavsiye Eylemlerin düzgün bir şekilde gönderilip gönderilmediğini doğrulamak için var olan orta haklara; Bize daha iyi bir fikir verebilir – Deadfish
@Deadfish Öneri için teşekkürler. Ben redux-logger kullandım ve eylem ilk etapta boş bir Harita olduğu için neden önceki durum undefined bilmiyorum rağmen eylem doğru sevk ediliyor. Ayrıca sunucuyu içeren bir kişi için, dağıtımdan sonra mapStateToProps çağrılmadığını fark ettim. – esaminu
"mapStateToProps" ifadesinin, durum mutasyona uğradığında çağrılmadığını düşünüyorum; ama redüktörünüzün kodu iyi görünüyor; Bütün kodunuzu github veya gist ile paylaşır mısınız; – Deadfish