我阅读了一些关于redux的教程,但我仍然对redux有一些疑问:
1)如果Reducer不改变状态,但返回一个新状态,新信息是如何保存的?
2)当我更改数据时,最推荐将API请求保存回服务器的位置是什么?减速机?商店?或者其他地方?
非常感谢!
答案 0 :(得分:3)
在reducers中,您始终复制当前状态并仅更新克隆的状态。通常你会看到一个点差运算符:
return { ...state, foo: 'new foo' }
如果我们一步一步地做到:
const newState = { ...state } // copy the current state
newState.foo = 'new foo'
return newState
您还可以使用Object.assign()
复制州:
const newState = Object.assign({}, state)
将保留所有其他信息,因为始终从之前的状态复制新状态。
API请求通常在动作创建者中处理。由于它们是异步的,因此需要中间件来处理它们,例如redux-thunk。
Reducers应该是纯粹的和同步的,你永远不应该在reducer中发送API请求。如果您使用React,则另一个地方称API为您的组件。这样做完全没问题,特别是你正在开发一个小应用程序。但是大多数时候你想要分离UI和逻辑,这就是我们使用动作创建者的原因。
对于异步操作创建者,您可以查看本章:http://redux.js.org/docs/advanced/AsyncActions.html