Reducx 상태가 mapStateToProps에서 정의되지 않음
나는 현재 이 튜토리얼을 따르고 있다.나는 관련된 약간의 장애에 부딪혔다.mapStateToProps
다음 코드로:
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;
가져온 투표 구성 요소:
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
소품. 더vote
prop은 클릭에 실행될 기능이다.hasVoted
참과 승자가 그림과 같이 우승자 구성요소만 렌더링할 경우 버튼이 비활성화된다.
국가는 불변할 것으로 예상된다.다음과 같은 JS 맵:
Map({
vote:{
pair:List.of('Movie A','Movie B')
}
});
대신 상태가 state.get-in 라인에서 정의되지 않았다고 말하는 오류를 받고 있다.
상태를 인덱스로 설정하는 코드:
const store = createStore(reducer);
const socket = io(document.location.protocol + '//' + document.location.hostname + ':8090');
socket.on('state', state => store.dispatch({
type: 'SET_STATE',
state
}));
I have loggedstore.getState()
설정 후 예상한 대로지만undefined
에mapStateToProps
. 위와 같은 맥락에서 상태 변수를 기록했는데 역시 예상대로 입니다.
나도 주(州)를 정상적으로 설정했는데 놀랍도록 효과가 있단다!
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()
나는 가능한 이유로 문서를 검토했다.mapStateToProps
불리지도 않고 그들 중 하나가 아니야
스위치 문에 감속기가 기본 동작이 없는 경우.환원기 매개 변수에서 초기 상태를 언급했음에도 정의되지 않은 상태가 저장 초기 상태로 반환되는 이유
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);
default:
return state;
}
}
export default reducer;
기본 문을 추가하면 문제가 해결된다 :)
나 역시 내 뿌리뽑기 기능을 내 손에 넘기지 못했기 때문에 결국 여기에 오게 되었다.createStore
방법나는 다음과 같이 했다.
const store = createStore(applyMiddleware(...middlewares));
필요:
const store = createStore(rootReducer(), applyMiddleware(...middlewares));
참조URL: https://stackoverflow.com/questions/38976134/redux-state-is-undefined-in-mapstatetoprops
'Programing' 카테고리의 다른 글
환원기 사가의 구성 요소에서 환원기 상태 변경 청취 (0) | 2022.04.06 |
---|---|
상태 후크를 사용하는 기능 부모 구성 요소에서 소품을 전달하려면 어떻게 해야 하는가? (0) | 2022.04.06 |
각도2 재료 'md-icon'은 알려진 요소가 아님 (0) | 2022.04.06 |
eslint 구문 분석 오류:예기치 않은 토큰 = (0) | 2022.04.06 |
어떤 환원 미들웨어를 선택해야 할까? (0) | 2022.04.06 |