# ❓ redux 中的 reducer 为什么最好是纯函数
为什么 reducer 最好是纯函数,首先你得看看文档怎么说 reducer 的作用的,"接收旧的 state 和 action,返回新的 state",其实就是起一个对数据做简单处理后返回 state 的作用。
那么为什么会设计成这样?因为 redux 的 reducer 的职责不允许有副作用,副作用简单来说就是不确定性,如果 reducer 有副作用,那么返回的 state 就不确定,举个例子,你的 reducer 就做了一个 value = value + 1 这个逻辑,然后返回 state 为{value},ok,这个过程没有问题,然后你可能觉得要加个请求来取得 value 后再加 1,那么你的逻辑就是 value = getValue() + 1, getValue 是个请求函数,返回一个值,这种情况,退一万步讲,如果你的网络请求这次出错,那么 getValue 就返回的不是一个数值,value 就不确定了,所以 return 的 state 你也不确定了,前端 UI 拿到的数据也不确定了,所以就是这个环节引入了副作用,然后 redux 设计好的规范就被你破坏了。