gpt4 book ai didi

javascript - 为什么 reduxReducer 中的状态变量不加 1

转载 作者:行者123 更新时间:2023-12-01 00:07:49 24 4
gpt4 key购买 nike

我在网页上有一个简单的两个按钮,一个用于递增,一个用于递减整数。 enter image description here

一旦我点击+按钮,它就会在当前值上加1。

下面是我的Reducer,我用setTimeout包裹了“INCRMENT”,当我点击+按钮时,我期望2秒后在页面上看到1,但是一旦点击发生,它就给我77,而没有等待2秒,为什么会发生这种情况,为什么每次都是77?

附:我可能需要一个中间件来处理这个异步操作,但我试图了解发生了什么

谢谢

const mathReducer = (state = 0, action) => {
switch (action.type) {
case 'INCREMENT':
return setTimeout(() => {
state = state + 1
}, 2000)
case 'DECREMENT':
return state - 1
default:
return state
}
}

export default mathReducer

最佳答案

因为reducer函数的工作原理是在给定旧状态和任何操作的情况下确定性地返回状态的新值。

在您的代码中,您只需使用以下行重新分配状态变量:

    state = state + 1

如果您想要做的是 1 秒后更新状态,我会做的是使用 setTimeout 来推迟触发“更新状态”操作。

关于javascript - 为什么 reduxReducer 中的状态变量不加 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60256603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com