[英]Redux's mapStateToProps not mapping props between AngularJS and React
[英]React / Redux: mapStateToProps not actually mapping state to props
我正在項目上使用React和Redux,我在實現啟用/禁用按鈕的功能時遇到問題。 我已經能夠:
但是,啟用/禁用功能仍然不起作用,因為似乎mapStateToProps
和connect
實際上並沒有將狀態映射到props。 我正在跟蹤canSubmit
,它在狀態內發生變化但在道具中undefined
。 成功將狀態映射到道具我錯過了什么?
相關代碼:
UserFormView.js
const mapStateToProps = (state) => ({
routerState: state.router,
canSubmit: state.canSubmit
});
const mapDispatchToProps = (dispatch) => ({
actions: bindActionCreators(ActionCreators, dispatch)
});
class UserFormView extends React.Component {
...
}
export default connect(mapStateToProps, mapDispatchToProps)(UserFormView);
操作:
export function enableSubmit(payload) {
return {
type: ENABLE_SUBMIT,
payload: payload
};
}
export function disableSubmit(payload) {
return {
type: DISABLE_SUBMIT,
payload: payload
};
}
Reducer(使用createReducer輔助函數):
const initialState = {
canSubmit: false
};
export default createReducer(initialState, {
[ENABLE_SUBMIT]: (state) => {
console.log('enabling');
return Object.assign({}, state, {
canSubmit: true
});
},
[DISABLE_SUBMIT]: (state) => {
console.log('disabling');
return Object.assign({}, state, {
canSubmit: false
});
}
});
好像你沒有使用key canSubmit
創建reducer。 這取決於您的商店配置,更具體 - 關於如何從reduce文件導入默認導出。 另外要提到的是,你可能會有名為canSubmit
減速器和一個密鑰canSubmit
,所以你需要在像state.canSubmit.canSubmit
這樣的代碼中引用它 - 你要從reducer上的動作處理程序返回對象,不是簡單的true
或false
布爾值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.