为了账号安全,请及时绑定邮箱和手机立即绑定

React-redux存储状态和mapStateToProps状态不同的原因是什么?

React-redux存储状态和mapStateToProps状态不同的原因是什么?

拉丁的传说 2021-04-08 16:15:57
我遇到一种情况,当我调度一个动作时,存储状态会发生应有的变化,但是我连接的组件mapStateToProps回调状态未反映出存储中的新更改。可能是什么原因呢?configureStore.jsexport default () => {    const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;    const store = createStore(        combineReducers({            concepts: conceptReducer,            conceptModal: conceptModalReducer,            cards: cardReducer,            cardModal: cardModalReducer,        }),        composeEnhancers(applyMiddleware(queryApi))    );    store.subscribe(() => {        console.log('store notification:', store.getState());    })    return store;};Reducer.jscase "UPDATE_CONCEPT_SUCCESS": {    let concepts = [...state.data].map((concept) => {        if (concept.id === action.id) {            return { ...concept, ...action.concept };        }        return concept;    });    /* Even with return below, mapStateToProps state parameter still returns the old state */    // return {'data': [{id:1},{id:2}]}    return { ...state, pending: false, lastErrorCode: null, lastErrorMessage: null, data: concepts };    break;}CardModal.jsexport default connect((state, p) => (() => {    // the console.log below returns the old state    console.log('connect called', state);    return ({        isThemeDark: state.common.isThemeDark,        allConceptsData: allConcepts(state.concepts.data),        conceptsData: allConceptsForTopicId(state.concepts.data, state.cardModal.topicId),    })}))(CardModal);
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

您的mapStateToProps返回一个函数,而不是新状态。


尝试以下方法:


export default connect((state, p) => {


  // the console.log below returns the old state

  console.log('connect called', state);


  return {

    isThemeDark: state.common.isThemeDark,


    allConceptsData: allConcepts(state.concepts.data),

    conceptsData: allConceptsForTopicId(state.concepts.data, state.cardModal.topicId),

  };

}))(CardModal);


查看完整回答
反对 回复 2021-04-22
  • 1 回答
  • 0 关注
  • 278 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信