Redux
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
笔记整理自这个视频,概念讲得挺清楚的,但是后面都是用class component举例
bilibili:
Redux是一个用于JavaScript 状态容器,提供可与预测化的状态管理。 Redux可以让你构建一致化的应用,运行于不同的环境(客户端、服务器、原生应用),并且易于测试。 Redux除了和React一起使用外,还支持其它界面库,而且它体小精悍(只有2kB)
随着JavaScript单页面发开日趋复杂,JavaScript需要管理更多的state(状态),这些 state 可能包括服务器响应、缓存数据、本地生成未持久化到服务器的数据,也包括UI状态等。 管理不断变化的state非常麻烦,如果一个 model的变化会引起另一个 model变化,那么当view 变化时,就可能引起对应model以及另一个 model的变化,依次可能会引起另一个 view 的变化。所以就会产生混乱, 而Redux 就是为了去解决这个问题。
单一数据源
整个应用的state
被存储在一棵object tree
中,并且这个object tree
只存在于唯一一个store中
State是只读的
唯一改变state
的方法就是触发 action
,action
是一个用于描述已发生事件的普通对象。
这样确保了视图和网络请求都不能直接去修改state,相反,它们只能表达想要修改的意图,因为所有的修改都被集中化处理,并且严格按照一个接一个的顺序执行
使用纯函数来执行修改
为了描述 action
如何改变 state tree
,你需要去编写reducers
Reducers只是一些纯函数,它接收先前的state和action,并且返回新的state。
可以复用、可以控制顺序、传入附加参数
redux是一个JavaScript容器,用于进行全局的状态管理
redux三大核心
单一数据源头
State是只读的
使用纯函数来执行修改
就是我们传递的数据, 那么我们在用React开发项目的时候,大致可以把State分为三类
DomainData:可以理解成为服务器端的数据,比如:获取用户的信息,商品的列表等等
UI State:决定当前UI决定展示的状态,比如:弹框的显示隐藏,受控组件等等
App State: App级别的状态,比如:当前是否请求loading,当前路由信息等可能被多个和组件去使用的到的状态
Action
是把数据从应用传到store
的载体,它是store
数据的唯一来源,一般来说,我们可以通过 store.dispatch()
将action
传递给store
Action 的本质就是一个javaScript的普通对象
Action 对象内部必须要有一个type属性来表示要执行的动作
多数情况下,这个type 会被定义成字符串常量
除了type 字段之外,action的结构随意进行定义
而我们在项目中,更多的喜欢用action创建函数(就是创建action的地方)
只是描述了有事情要发生,并没有描述如何去更新state
Reducer本质就是一个函数,它用来响应发送过来的actions,然后经过处理,把state发送给Store的
注意:在Reducer函数中,需要return返回值,这样Store才能接收到数据. 函数会接收两个参数,第一个参数是初始化state,第二个参数是action
Store就是把action与reducer联系到一起的对象 主要职责:
维持应用的 state
提供 getState()方法获取state
提供 dispatch()方法发送action
通过 subscribe()来注册监听
通过 subscribe()返回值来注销监听
State状态
DomainState:服务器返回的State
UI State:关于当前组件的State
APP State:全局的State
Action 事件
本质就是一个JS对象
必须要包含type属性
只是描述了有事情要发生,并没有描述如何去更新state
Reducer
本质就是函数
响应发送过来的 action
函数接收两个参数,第一个是初始化state,第二个是发送过来的action
必须要有 return返回值
Store
用来把action和reducer关联到一起的
通过createStore来构建store
通过subscribe来注册监听
通过dispatch来发送action
找的前端小夏老师的讲解,用的是function components。
看P2:redux的基本操作,以下是笔记
redux的基本操作流程要烂熟于心。比如:如何获取状态?如何更新状态?什么是action?如何创建store。
store是存放数据的仓库
仓库中存储的数据。如何获取state的快照?
action就是一个对象
唯一能够更改当前state的方法
reducer是一个函数,用来返回一个新的state。
bilibili: