Redux,我可以修改状态——它不是只读的,在动作调度之外?

Redux, I can modify the state - it is not read only, outside of an action dispatch?

也许有人可以在这里为我发光。

我一直在做 redux,只是在阅读和阅读 "State is read only"。好的,我认为是这样 - 但让我试试。

所以,在我的组件中,我将它包装在一个连接中,你有什么,现在我可以访问状态...所以,我在渲染方法中这样做了。

this.props.state.MYSTORE = {}

好吧,这实际上毁了我的商店。我得到了纯函数的概念,但是 'state is read only' 这个想法并不完全正确。我认为它只会杀死商店的这个实例(传递到我的组件中),但实际的商店是 kaboomed!我对 "state is read only" 有点困惑 - 显然,事实并非如此。

什么是只读的?我知道你通过动作创建者设置状态,但这并不禁止不良做法。就像在您使用 "setState" 的常规组件中一样,但是您可以只对状态树进行分配...

Redux 的大部分行为是对绝对执行的期望和约定。如果你为你的 Redux 状态使用普通对象,技术上你 可以 如果你想直接改变它(但这几乎总是一个 非常 坏主意!).

除此之外,Redux 主要是一种将应用程序的所有 "write" 逻辑组织到单一结构化方法中的方法,而不是将随机写入分散在整个代码库中。

如果您确实需要额外的帮助以确保您不会意外改变您的状态,可以使用多种工具。 DevTools#Linting page of my Redux addons catalog lists some plugins that will warn you if you accidentally mutated the state, although those obviously should only be used in development. You can also use a specific immutable data 库可以 "freeze" 你的普通对象或给你一组专门的数据结构来包装你的状态内容。