重新计算初始状态

Recalculate initial state

有没有办法重新计算切片的初始状态。我正在尝试重置整个商店:

const rootReducer = (state: any, action: any) => {
    // Clear the state
    if (action.type === clearState.type) {
        // Clear all cached api requests
        apiSlice.util.resetApiState();

        // Return initial state
        state = undefined;
    }
    return combinedReducer(state, action);
};

问题是我的身份验证切片具有以下初始状态:

export const initialState = {
    isLoggedIn: checkIfUserIsAlreadyLoggedIn(),
    email: "",
    status: "idle",
    errorMessage: "",
};

因此,当我启动我的应用程序并且 checkIfUserIsAlreadyLoggedIn returns 为真时,当我重置商店时,isLoggedIn 仍然为真。

有什么方法可以重新计算 checkIfUserIsAlreadyLoggedIn 函数,从而重新计算初始身份验证切片状态?

谢谢!


没有。这将是 reducer 中的副作用,这在 Redux 中是被严格禁止的。 reducer 应该只依赖于状态和动作,而不是外部数据源。

此外,apiSlice.util.resetApiState() 除非您发送它,否则不会执行任何操作。

也许把它全部写成一个 thunk:

const resetAll = dispatch => {
  dispatch(resetAction())
  dispatch(apiSlice.util.resetApiState())
  dispatch(setLoginState(checkIfUserIsAlreadyLoggedIn()))
}