唯一的状态树(数据源)
The first principle of Redux is whether your app is a really simple one like this counter example, or a complex application with a lot of UI, and change of state, you are going to represent the whole state of your application as a single JavaScript object.
前言
接触过react的人应该对redux并不陌生。但是,redux并不是react的伴生产物,即使你使用其他类库,也可以使用redux框架来管理状态,但是,有react如此好的选择,没人会考虑其他的技术选型。但是,多多少少还是会有人误解redux。
正文
redux框架在使用过程中有三个原则:
唯一的状态树(数据源) The first principle of Redux is whether your app is a really simple one like this counter example, or a complex application with a lot of UI, and change of state, you are going to represent the whole state of your application as a single JavaScript object.
这是react作者的原话。译文则是:
Redux的第一原则是无论你的应用是一个像计数器一样简单的应用,或者是有大量UI的复杂组件,但去改变状态时,你都应该将整个应用的状态表示成一个单一的JavaScript对象。
这也是它与flux不同的地方,flux使得整个程序拥有多个store对象,而在多个store对象之间依赖时,需要使用waitFor去进行控制,redux轻松的解决了这一缺点。
状态树是只读的
作为一个状态管理的框架,将状态放在状态树中进行严格控制,这样可以形成一个单向数据流,使得整个项目便于维护。
那对于一个数据驱动的框架,如果不能改变state,那如何去进行变化呢。在redux中有着action这么一个概念。store对象通过dispatch来进行行为的分发,以此来修改每一次chang。
使用一个纯函数
纯函数这个概念,或许你没听说过,或许你已经深入理解。不过没关系,我们先来了解一下他的反义词impure function。不纯函数,听起来怪别扭的,叫他普通函数吧。何为普通函数,来看一下,下面的例子:
这里的函数做了两件事情,一件更新数据库,以及返回参数的平方。为何说它不是纯函数呢,主要是因为函数在执行过程中执行了类似于更新数据库,或者调用其他函数的过程。真正的纯函数需要满足几个条件:
返回值为一个新的值,而非在原有参数上进行修改。
而在redux中,需要你去创建一个纯函数,称之为reducer。传入的参数为上一个状态和行为,返回值为下一个新状态。
总结
在使用redux的过程中,应该使用记住这三个原则,才能使得开发出来的程序,风格更加的严谨。