这篇博客是看一个网上视频的笔记,后面也会根据自己在项目开发过程中遇到的问题进行不断的更新。
目录
Redux概述
什么是Redux
Redux是一个用于Javascript状态容器,可以进行全局状态管理。
Redux可以构建一致化的应用,运行与不同的环境(客户端,服务器,原生应用),并且易于测试。
Redux除了和React一起使用外,还支持其他界面库,而且它体积很小(2KB)。
Redux的设计初衷
随着Javascript单页面开发日益复杂,Javascript需要管理更多的state(状态),这些state可能包括服务器响应、缓存数据、本地生成未持久化到服务器的数据,也包括UI状态等。
管理不断变化的state非常麻烦,如果一个model的变化会引起另外model的变化,那么当view发生变化时,就可能引起对应model以及另一个model的变化,依次可能引起其他view的变化,所以逻辑处理就会比较混乱。而Redux就为了解决这个问题的。Redux可以进行全局状态管理。
Redux三大核心
1、单一数据源
整个应用的state都被保存在一个object tree中,Object Tree只存在于唯一的一个store中。
2、state是只读的
说state是只读的,并不意味着state不能修改。
如果修改state需要触发一个action。action是一个用于描述已发生事件的普通对象。
这样确保了视图和网络请求都不能直接去修改state。它们只能表达想要修改的意图。所有的修改都会被集中化处理,并且按照一个接一个的顺序执行。
3、使用存函数来执行修改
为了描述action如何改变state,需要编写reducers。
reducers是一些纯函数,它接收先前的state和action,并且返回新的state。
可以复用、控制顺序、传入附加参数。
Redux组成部分
state状态
state就是我们传递的数据。state可以分为三类:
(1)DomainDate:从服务器请求到的数据
(2)UI state:控制UI展示的状态,比如弹框的显示隐藏等
(3)App state:App级别的状态,比如路由信息可以被多个组件使用到的状态
action
action是把数据从应用传到store载体,它是store数据的唯一来源,可以通过store.dispatch()将action传递给store
reducer
reducer本质就是一个函数,可以响应发送过来的action,经过处理,将state发送给store。
注意:在reducer函数中,需要return返回值,这样store才能接收到数据。
函数会接收两个参数,第一个参数是初始化state,第二个是action