今天去面试的时候,面试者问了我这个问题:redux的三大定律指的是什么。
回想起来,我用过redux,但还没有做过系统的了解。这应该是一个很基础的问题,我却没有回答上来。
回家之后立刻总结了一下关于redux的资料,做进一步的了解。
Redux是什么?
Redux是JavaScript的状态管理容器,它可以运行在不同环境下。客户端、服务器端、原生应用都可以运行redux。需要注意的是,不管你用的是什么框架,都可以用redux来进行状态管理。要记住不是只有React才能使用Redux。
redux是让state的变化可以预测的工具。那么Redux又是怎么做到预测state的变化的呢?
Redux三大定律
单一数据源
整个应用的state存储在一个JavaScript对象里,Redux用一个称为store的对象来存储整个state
state是只读的
不能在state上面直接修改数据,改变state的唯一方法是触发action。action只是一个信息载体,是一个普通的JavaScript对象。如此一来便可确保其他操作都无法修改state数据,整个修改都被集中处理,而且严格按照顺序执行。
使用纯函数执行修改
为了描述action怎么改变state,需要编写reducer来规定修改的规则。reducer是纯函数,接收旧的state和处理的action,返回新的state。reducer可以根据应用的大小拆分成多个,分别操作state的不同部分。
纯函数的好处就是它仅仅依赖于函数的输入。当输入确定的时候,输出就确定了。