Javascript 为什么redux Reducer中的状态变量不增加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) => {

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

一旦我点击+按钮,它将向当前值添加1

下面是我的减速机,我用
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