【发布时间】:2021-02-01 17:46:28
【问题描述】:
我正在尝试使用 React 重新创建类似 Memory 的游戏。我正在使用 Redux Toolkit 进行状态管理,但我遇到了一个用例问题。
在 selectCard 操作中,我想将选定的卡片添加到商店,并检查是否已经选择了其中的 2 张。如果是这样,我想在延迟后清空selected 数组。
const initialState : MemoryState = {
cards: [],
selected: [],
}
const memorySlice = createSlice({
name: 'memory',
initialState: initialState,
reducers: {
selectCard(state: MemoryState, action: PayloadAction<number>) {
state.selected.push(action.payload);
if (state.selected.length === 2) {
setTimeout(() => {
state.selected = [];
}, 1000);
}
}
}
});
卡片选择得很好,但是当我选择 2 时,我会在 1 秒后收到此错误:
TypeError: Cannot perform 'set' on a proxy that has been revoked,上线state.selected = [];
我是这个东西的新手,我如何在延迟后访问状态?我必须异步执行吗?如果有,怎么做?
【问题讨论】:
标签: reactjs redux redux-toolkit