Redux - 在reducer中更新状态,但不将新值更新为组件

时间:2018-04-13 06:21:44

标签: reactjs redux

在redux中结合React app更新状态时,会在reducer中更新状态。但在容器中,我仍然处于旧状态。

以下是减速机。

import * as constants from '../actions/constants';

export function caseTypes(state=[], action) {
  switch(action.type) {
    case constants.LOAD_CASE_TYPES_SUCCESS:
      return action.caseTypes
    default:
      return state;
  }
}

export function cases(state=[], action) {
  switch (action.type) {
    case constants.LOAD_CASES_SUCCESS:
        const newState = Object.assign({}, state, {cases:action.cases})
        alert('newstate' + newState.cases)
        return newState;
    default:
        return state;
  }
}

如果我在减速机“案例”中保留警报,我会将新值更新到州。但是在下面的组件中,我仍然处于旧状态 mapStateToProps函数。从CaseSearchConnectComponent调度Action,CaseSearchConnectComponent内的mapStateToProps也提供旧值。

class casePage extends React.Component {
  render() {
    return(
      <div>
        <div height="100px">
          <CaseSearchConnectComponent/>
        </div>
        {this.props.loadCaseList && 
          <div>
            <CaseListConnectComponent cases={this.props.cases}/>
          </div>
        }
      </div>
    )
  }
}

function mapStateToProps(state) {
  alert("case page cases  " + state.cases)
  return {
    cases:state.cases 
  };
}

const CasePageConnectComponent = connect(mapStateToProps)(casePage);
export default CasePageConnectComponent;

1 个答案:

答案 0 :(得分:0)

mapDispatchToProps后你错过了mapStateToPropsmapStateToPropsmapDispatchToProps都是纯函数,分别为存储“state”和“dispatch”提供。此外,两个函数都必须返回一个对象,然后该对象将作为它们所连接组件的道具传递。

请考虑此documentation供您参考。