[英]Redux won't update React component when state change
我正在尝试进行简单的Redux React测试工作。 我真的是Redux和React的新手。 我一直在阅读Redux文档,在“ 疑难解答”部分中说,减速器每次都应返回新对象。 就我而言,我想返回的是新对象...
任何建议,感激不尽!
我的减速器:
const memberOpReducer = (state = {isLoading: true, isLoggedIn: false}, action) => {
switch(action.type) {
case 'CHECK_LOGIN_STATUS':
return {
isLoading: true
}
case 'LOGIN_STATUS':
return {
isLoading: false,
isLoggedIn: action.response.status === 'connected',
response: action.response
};
default:
return state;
}
};
我的动作:
const checkLoginStatus = () => ({
type: 'CHECK_LOGIN_STATUS'
});
const loginStatus = response => ({
type: 'LOGIN_STATUS',
response: response
});
const getLoginStatus = (options = {}) => dispatch => {
dispatch(checkLoginStatus());
FB.getLoginStatus(function (response) {
dispatch(loginStatus(response));
}, options);
}
请看一下这支工作笔: https : //codepen.io/mrducnguyen/pen/rGxpGR
问题出在您的mapStateToProps
函数中:
// Your function, just for reference
const mapStateToProps = state => {
return {
isLoggedIn: state.isLoggedIn === undefined ? false : state.isLoggedIn,
isLoading: state.isLoading === undefined ? true : state.isLoading,
response: state.response
}
}
您正在访问state.isLoggedIn
,但是您应该在访问state.memberOpReducer.isLoggedIn
,因为您使用了combineReducers
,它以reducer的名称命名该reducer的所有字段的名称空间。 当然,所有其他字段都相同。
// Fixed version
const mapStateToProps = state => {
return {
isLoggedIn: state.memberOpReducer.isLoggedIn,
isLoading: state.memberOpReducer.isLoading,
response: state.memberOpReducer.response
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.