持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
前言
今天学习Redux,官网说Redux是JS 应用的状态容器,提供可预测的状态管理,他不是react插件库,是js库。在React中用得比较多。主要作用是集中式关系React应用中多个组件共享的状态,在Vue中也有配套的状态管理库叫Vuex(旧)/Pinia(新)。Redux非常抽象难以理解这里只做基础概念了解。
React有props(属性,数据流流是自上而下的单向的,是父组件向子组件进行传递)和state(状态,组件内部的状态,不能够直接修改,必须要通过setState来改变值的状态),React很难让两个组件互相交流,Redux把所有的state集中到一个地方供多个组件共享,灵活使用。
Redux官网:Redux
使用Redux情况
- 某组件的状态需要让其他组件随时可以拿到。
- A组件需要改变B组件的状态
- 能不用Redux就不用
Redux 三大核心概念
先了解其中基本概念,再连起来做一个简单的demo深入了解
actions
actions对象里面有两个属性type和data,作为状态传递的标识和数据。
type必须的属性,必须是是字符串且唯一存在的。 状态动作
data可选属性。状态细节
组件发出的通知 通过action,改变 state,从而改变其他组件。
修改 state的唯一办法是使用 action
store
负责把action动作交给对应的reducer进行执行,应用的整体全局状态以对象树的方式存放于单个 store 中,所以说store有且只能有一个。
reducers
reducer用于将store发过来的action完成并将结果返回给store,有两个功能:初始化状态,加工状态。
总结
Redux 非常像pubsub-js消息订阅发布,但是pubsub-js并不是集中式的,Redux可以进行状态的加工从而进行多对多的组件间的状态管理,pubsub-js一般是一对一之间的数据传递。