前言
时间旅行
是什么
Redux 是一个 JavaScript 状态容器,提供可预测化的状态管理,使 React 应用很容易实现时间旅行、状态管理。是为了解决组件层级较深时,单向数据流带来 React 组件间通信不便和组件间状态共享而提出的一种解决方案,同时将业务数据处理和用户交互分离开来
当我们在以下情况时使用
非兄弟、非父子组件有状态需要共享
某个状态需要在任何地方都可以拿到,需要全局使用
一个组件需要改变全局状态
一个组件需要改变另一个组件的状态
Redux 的关键字
Redux 主要包括 3 个部分,store + action + reducer
store:存储数据的地方
1、存储的是某个时间点 state 的快照,因此 state 是只读的
2、只能通过 action 来触发修改,同时通过 reducer 来返回新的 state 用来存储当前状态 state 的对象
3、在组件 connect 后,store 的改变就会驱动react的生命周期循环,从而驱动页面状态的改变
action:
1、用于接受 state 的改变命令,是改变 state 的唯一途径和入口
2、一般使用时在当前组件里面调用相关的 action方法,通常把和后端通信 ajax 函数放在这里
reducer:
action 的处理器,用于修改 store 中 state 的值,返回一个新的 state 值
MVC 的实践
React + Redux 实现了 mvc 分层 Model 是进行集中数据处理,在这里集中进行 api 操作,对应action View 是进行视图更新的地方,我们在这里用组件构建视图,对应react component Controll 响应视图层的事件并将 model 返回的结果更新到视图层,对应reducer
发布订阅模式的实践
Redux 使用了发布订阅模式,store 并不是所有组件都能接受 store 的更新,Redux 提供了connect api,组件connect 后实现了对 store 订阅