在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;
答案 0 :(得分:0)
mapDispatchToProps
后你错过了mapStateToProps
。
mapStateToProps
和mapDispatchToProps
都是纯函数,分别为存储“state”和“dispatch”提供。此外,两个函数都必须返回一个对象,然后该对象将作为它们所连接组件的道具传递。
请考虑此documentation供您参考。