Programing

Reducx 상태가 mapStateToProps에서 정의되지 않음

c10106 2022. 4. 6. 22:09
반응형

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소품. 더voteprop은 클릭에 실행될 기능이다.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()설정 후 예상한 대로지만undefinedmapStateToProps. 위와 같은 맥락에서 상태 변수를 기록했는데 역시 예상대로 입니다.

나도 주(州)를 정상적으로 설정했는데 놀랍도록 효과가 있단다!

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

반응형