React Container-来自任一reducer的访问状态
React Container - access state from either reducer
我很难理解这一点。基本上,我有一个组件,它从状态中提取isFetching布尔值
function mapStateToProps(state){
const {errorMessage,isFetching} = state.signUp
const {isAuthenticated,username} = state.login;
return {
isAuthenticated,
errorMessage,
isFetching,
username
}
}
我有以下减速器
export const signUp = (state={},action) => {
switch(action.type){
case SIGNUP_REQUEST:
return Object.assign({},state,{
isFetching: true
})
case SIGNUP_FAILURE:
return Object.assign({},state,{
isFetching:false,
// isAuthenticated: false,
errorMessage: action.message
})
default:
return state
}
}
export const login = (state={isAuthenticated:false},action) => {
switch(action.type){
case LOGIN_REQUEST:
return Object.assign({},state,{
isFetching: true,
isAuthenticated: false
})
case LOGIN_SUCCESS:
return Object.assign({},state,{
isFetching:false,
isAuthenticated:true,
username: action.username
})
case LOGIN_FAILURE:
return Object.assign({},state,{
isFetching: false,
isAuthenticated: false,
errorMessage: action.message
})
default:
return state
}
}
当我发送loginRequest时,reducer将isFetching设置为true。但是组件仍然没有更新,因为它只从signUp Reducer中查看isFetching变量。
有没有一种方法可以让组件同时查看isFetching变量的两个reducer?
有几个选项:
创建第三个(加载状态)减速器
创建另一个只有isFetching
处于其状态的reducer,并侦听相同的事件。
export const loading = (state={}, action) => {
switch(action.type) {
case SIGNUP_REQUEST:
case LOGIN_REQUEST:
return Object.assign({},state,{
isFetching: true
})
case SIGNUP_SUCCESS:
case SIGNUP_FAILURE:
case LOGIN_SUCCESS:
case LOGIN_FAILURE:
return Object.assign({},state,{
isFetching: false
})
default:
return state
}
}
如果这两个请求有可能重叠,那么您可能应该有独立的isLoading
变量,只使用||
。
检查视图中的两个isFetching
变量
{signup.isFetching || login.isFetching}
如果请求可能重叠,这是很好的。
将其全部放在一个减速器中
不太好。。
相关文章:
- React Container-来自任一reducer的访问状态
- 如何从一个组件访问另一个组件的状态
- 如何将链接状态设置为在用户访问另一个页面之前保持
- AngularJS:阻止用户访问某个状态
- jQuery成功,访问HTTP状态文本
- Internet Explorer:可以't访问IFrame内容,除非状态代码为200
- RxJ避免外部状态,但仍然访问以前的值
- AngularUI路由器-无法通过URL访问状态
- 如何删除“;被访问”;当我滚动时从链接进入状态
- Angular ui路由器:如何阻止访问一个状态
- 历史记录.js - 直接访问时检测状态
- 如何在 React 中访问孩子的状态
- 如何使用重新选择访问当前的 Redux 状态
- 我可以使用Facebook Graph API访问用户的好友状态吗?
- React.js中setInterval内的访问状态问题
- Redux;通过combineRoducer使用组合减速器时访问状态的其他部分
- 在Angularjs中,ui-router访问状态url开头的参数
- 在react中访问状态
- React路由器-动态路由-通过路由器访问状态对象
- 可以't从子组件访问状态