发件人:https://redux.js.org/introduction/three-principles
状态为只读。更改状态的唯一方法是发出一个动作,一个描述发生了什么的对象。这样可以确保视图和网络回调都不会直接写入状态。相反,他们表达了改变国家的意图。因为所有更改都是集中的,并且严格按照顺序进行,所以没有任何微妙的竞争条件值得关注。由于动作只是简单的对象,因此可以将它们记录,序列化,存储并在以后重播,以进行调试或测试。
对此我产生了两个问题……
答案 0 :(得分:0)
要回答您的问题:
redux的执行是同步的,因此当您调度动作时,您正在redux存储上执行一个方法,该方法调用reducer来计算新状态。 redux中不存在“异步动作”的概念,这就是为什么您有许多启用它们的解决方案的原因:redux-thunk,redux-saga,redux-observable等。所有“异步操作”库最终都必须同步执行调度功能才能更改redux状态。
在编写良好的redux应用程序中,对redux存储区中包含的任何状态的更改只能由从可访问调度功能的应用程序中某处调度的操作引起。这使您可以完全控制并了解状态更改的位置和方式。那就是redux的主要卖点:“可预测的状态容器”。您当然可以将局部状态存储在某个全局变量中,然后手动对其进行突变,但是随后您必须对该状态变量使用类似Object.observe
(实际上已弃用,看不到替换物)的名称,以监视对其的更改。