假设我有一个 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/