【发布时间】:2020-09-05 14:40:00
【问题描述】:
我正在尝试同时注销和清除商店,所以点击我发送这个:
dispatch({type: PURGE, key: 'root', result: () => { } });
Redux persist 捕获它,并报告清除存储。伟大的。 在另一个减速器中,我捕获了该调度,并像这样删除了我的访问令牌:
import { PURGE } from 'redux-persist/es/constants';
const authSlice = createSlice({
name: 'auth',
initialState,
reducers: {
setAccessToken(state: AuthState, action: PayloadAction<Auth>): void {
state.accessToken = action.payload.accessToken;
state.expiresIn = action.payload.expiresIn;
},
},
extraReducers: {
[PURGE]: (state: AuthState, action: string): void => {
state.accessToken = initialState.accessToken;
state.expiresIn = initialState.expiresIn;
},
},
});
实际调用了 PURGE reducer,并修改了状态,但仍然没有发生重新渲染。所以 redux 不能接受它。但根据文档,Redux 工具包使用 Proxy 对象作为状态并进行比较以查看它是否被修改。
我尝试过的事情:
state = initialState;
和
state = { ...initialState };
没用。存储工作并保存数据,其他操作工作。我该如何进行?
编辑:进一步调试显示我自己的 reducer 在 redux-persist reducer 之前被调用,redux-logger 报告我的 reducer 根本没有改变状态。
【问题讨论】:
标签: react-native react-redux redux-toolkit