关于redux原则的几个问题

时间:2017-05-27 08:32:12

标签: redux

我阅读了一些关于redux的教程,但我仍然对redux有一些疑问:

1)如果Reducer不改变状态,但返回一个新状态,新信息是如何保存的?

2)当我更改数据时,最推荐将API请求保存回服务器的位置是什么?减速机?商店?或者其他地方?

非常感谢!

1 个答案:

答案 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