【问题标题】:Recalculate initial state重新计算初始状态
【发布时间】:2022-01-06 22:39:57
【问题描述】:

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

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 返回真时,当我重置存储时,isLoggedIn 仍然为真。

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

谢谢!

【问题讨论】:

    标签: reactjs redux redux-toolkit


    【解决方案1】:

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

    另外,apiSlice.util.resetApiState() 不会做任何事情,除非你发送它。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2020-03-09
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 2023-01-27
      相关资源
      最近更新 更多