redux - 在调度 Redux Action 之前检查 AppState?

标签 redux action store dispatch

假设我有一个 Redux 存储,它跟踪由单个“颜色”变量作为字符串组成的 AppState。

initialState = {
    color: 'red'
}

以及更新此操作:

const SET_COLOR = 'SET_COLOR';

function setColor(color) {
    return { type: SET_COLOR, color };
}  

并假设我有某种输入,允许用户将颜色设置为他们喜欢的任何颜色。 (如何完成此操作无关紧要)

let newColor = <got new color somehow>

现在假设用户输入“红色”(与当前状态相同)。我应该关心 newColor 和当前 颜色 是否不同?即,我是否应该首先检查商店以查看 newColor 是否与旧 颜色 不同,并且仅调度 setColor 操作 IFF 颜色是不同的?或者我应该只发送 setColor 操作,无论是否存在差异。

最佳答案

如果你做得正确(最好为你的状态使用良好的不可变数据类型,例如immutable.js),那么你的reducer返回的新状态等于之前的状态,并且组件将不会重新渲染(前提是你有一个 PureComponent 或者 componentShouldUpdate 返回 false 因为状态没有改变)。因此,调度一些额外的操作实际上不会给您的应用带来额外的负担。

关于redux - 在调度 Redux Action 之前检查 AppState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45361465/

相关文章:

C#:部分方法和操作,未实现的主体

yii - 向 Yii Controller 中的 actionIndex 发送参数

用于存储图片和 gps 位置和描述的 android 应用程序

ios - 我无法将按钮与操作相关联

reactjs - 如何在故事书中注入(inject)窗口变量?

javascript - 如何强制 Jest 单元测试断言在测试结束之前执行?

javascript - 如何返回一个简单的 redux Action 创建者的 promise ?

javascript - 从多个 Ext.data.Store 对象创建一种 "Ext.data.StoreView"

javascript - 将复选框值存储在 webix 的 cookie 中

reactjs - 在 React/Redux 应用程序中存储 RTCPeerConnection 对象的最佳位置在哪里?