में अपरिभाषित है, वर्तमान में मैं this ट्यूटोरियल का अनुसरण कर रहा हूं। मैं निम्नलिखित कोड में mapStateToProps
को शामिल में कोई समस्या का एक सा मारा गया है:Redux राज्य 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;
यह pair
प्रोप से दो बटन प्रस्तुत करना माना जाता है:
import 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;
यहाँ वोटिंग घटक है कि आयातित किया गया है। vote
प्रोप एक ऐसा फ़ंक्शन है जिसे क्लिक पर निष्पादित किया जाएगा, hasVoted
सही होने पर बटन अक्षम करता है और विजेता केवल दिखाए गए विजेता घटक को प्रस्तुत करता है।
Map({
vote:{
pair:List.of('Movie A','Movie B')
}
});
इसके बजाय मैं कह रही है कि राज्य state.getIn लाइन में अपरिभाषित है एक त्रुटि हो रही है:
राज्य एक immutableJS नक्शा है कि इस तरह दिखता है होने की उम्मीद है।
कोड राज्य की स्थापना सूचकांक में है:
const store = createStore(reducer);
const socket = io(document.location.protocol + '//' + document.location.hostname + ':8090');
socket.on('state', state => store.dispatch({
type: 'SET_STATE',
state
}));
मैं सेट करने के बाद store.getState()
लॉग इन किया है और ऐसी उम्मीद है के रूप में लेकिन mapStateToProps
में undefined
। मैंने उपर्युक्त संदर्भ में राज्य चर को भी लॉग किया और यह भी अपेक्षित है।
मैं भी राज्य में सामान्य रूप से सेट और यह आश्चर्यजनक रूप से काम करता है !:
store.dispatch({
type: 'SET_STATE',
state: {
vote: {
pair: ['Movie A', 'Movie B']
}
}
});
ऊपर राज्य के मूल्य वास्तव में क्या सर्वर
अन्त में यहाँ क्या मेरी कम करने लग रहा है से प्राप्त किया जाता है जैसे:
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;
मैं क्या गलत कर रहा हूं?
संपादित करें: मुझे एहसास हुआ कि mapStateToProps
store.dispatch()
के बाद नहीं कहा जा रहा है। संभावित कारणों से docs के माध्यम से mapStateToProps
को कॉल नहीं किया जा रहा है और यह उनमें से एक नहीं है।
ठीक कर देंगे दिया जाता है मैं आप जोड़ना 'redux-logger' का सुझाव मौजूदा मध्यवर्ती लोगों को यह सत्यापित करने के लिए कि क्या कार्य ठीक से प्रेषित किए गए हैं या नहीं; यह सुझाव के लिए हमें एक बेहतर विचार – Deadfish
@Deadfish धन्यवाद दे सकता है। मैंने रेडक्स-लॉगर का उपयोग किया और कार्रवाई सही तरीके से भेजी जा रही है हालांकि मुझे नहीं पता कि पिछली स्थिति क्यों अनिश्चित है क्योंकि मेरा प्रारंभिक राज्य खाली नक्शा है। मुझे यह भी एहसास हुआ कि सर्वर से जुड़े किसी के लिए, प्रेषण के बाद mapStateToProps को नहीं कहा जाता है। – esaminu
मुझे लगता है कि जब राज्य उत्परिवर्तित हो जाता है तो 'mapStateToProps' को नहीं कहा जाता है; लेकिन आपका reducer कोड ठीक दिखता है; क्या आप अपना पूरा कोड जिथब या गीस्ट के माध्यम से साझा कर सकते हैं; – Deadfish