Javascript 为什么redux Reducer中的状态变量不增加1
我在网页上有一个简单的两个按钮,一个用于递增,一个用于递减整数。 一旦我点击+按钮,它将向当前值添加1 下面是我的减速机,我用Javascript 为什么redux Reducer中的状态变量不增加1,javascript,reactjs,redux,redux-reducers,Javascript,Reactjs,Redux,Redux Reducers,我在网页上有一个简单的两个按钮,一个用于递增,一个用于递减整数。 一旦我点击+按钮,它将向当前值添加1 下面是我的减速机,我用setTimeout包装了“INCREMENT”,当我点击+按钮时,我期望在2秒后在页面上看到1,但它会在点击发生时立即给我77,而不是等待2秒,为什么会发生这种情况,为什么每次都是77 p、 我可能需要一个中间件来处理这个异步操作,但我正试图了解到底发生了什么 多谢各位 const mathReducer = (state = 0, action) => {
setTimeout
包装了“INCREMENT”,当我点击+按钮时,我期望在2秒后在页面上看到1,但它会在点击发生时立即给我77,而不是等待2秒,为什么会发生这种情况,为什么每次都是77
p、 我可能需要一个中间件来处理这个异步操作,但我正试图了解到底发生了什么
多谢各位
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延迟触发“更新状态”操作 因为reducer函数通过确定返回状态的新值(给定旧状态)以及任何操作来工作 在代码中,您只需重新分配状态变量,如下所示:
state = state + 1
如果您想在1秒后更新状态,我要做的是使用setTimeout延迟触发“更新状态”操作 你没有返回状态。状态是一个对象,不是一个数字,而是它每次如何计算为77?请您通过JSFIDLE给出相同的代码,我们会研究它吗?请您显示按钮代码,您不会返回状态。状态是一个对象,不是一个数字,而是它如何每次计算到77?你能通过JSFIDLE给出相同的代码吗?你能看一下吗?你能显示一下按钮代码吗?谢谢这是一种很好的方法使它工作,我试着理解为什么它每次都计算到77而没有延迟谢谢这是一种很好的方法使它工作,我试着去理解为什么每次都能毫不拖延地计算到77