是否可以使用' hasFetched'一个' isFetching'还原国旗?

时间:2018-05-09 08:49:54

标签: redux state single-page-application redux-thunk

我是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状态?还有其他模式吗?

0 个答案:

没有答案