我是redux thunk的新手,并且一直在使用它来调用一个动作创建者,该动作创建者向API发出请求以查看用户是否已登录。如果用户未登录,我想重定向到登录页面。我想要一个加载程序组件在用户仍然被提取时显示,但也要等到它被重定向或显示页面组件之前被提取。这就是我的用户减速器的样子。
//User reducer
export default (state = { isFetching: false, hasFetched: false }, action) => {
switch (action.type) {
case GET_USER_REQUEST:
return { ...state, isFetching: true };
case GET_USER_SUCCESS:
return {
...state,
...action.payload,
isFetching: false,
hasFetched: true
};
case GET_USER_FAILURE:
return {
...state,
...action.payload,
isFetching: false,
hasFetched: true
};
default:
return state;
}
};
然后我可以使用下面的简单函数来检查用户状态是否准备就绪:
const isStateReady = state => {
return !state.isFetching && state.hasFetched;
};
我遇到了没有' hasFetched'标记,因为应用程序将在获取完成之前重定向到登录页面。
这是否可以在我的整个应用程序中处理我的redux状态?还有其他模式吗?