store
中存储状态,以及更新store
中的状态type
属性,描述对store
中的状态进行怎样的操作dispatch()
方法触发Action
Action
中描述了,对store
中的状态要进行怎样的操作
Action
会被Reducer
接收到,Reducer
函数内部根据Action
中的type
判断,对状态进行怎样的操作。Reducer
数据处理完成之后(一般是根据action传入的参数,将原来的store拷贝一份并合并,最后返回新的对象),最终跟新Store中的状态Store
中的状态发生更新之后,将新的状态同步到视图View
视图中通过订阅了Store,当Store发生变化会通知View更新
那么view 是如何订阅Store的呢?
在React应用中使用Redux时,React组件通过react-redux库中的connect函数来订阅Redux Store。connect函数是react-redux提供的一个高阶函数,它将React组件连接到Redux Store,并将Redux中的状态和操作映射到组件的props中。
import { connect } from 'react-redux';
const mapStateToProps = state => {
// 将Redux中的状态映射到组件的props中
return {
someValue: state.someValue
};
};
const mapDispatchToProps = dispatch => {
// 将Redux中的操作映射到组件的props中
return {
someAction: () => dispatch(someAction())
};
};
// 使用connect将组件连接到Redux Store
const ConnectedComponent = connect(
mapStateToProps,
mapDispatchToProps
)(YourComponent);
所有的状态都存储在Store
当中,View
不能直接操作Store
;
View
需要更新状态时,需要通过dispatch函数,去触发Action
(描述一下我要对当前状态做怎样的操作);
然后,Action
会被Reducer
接收到,Reducer
根据Action
中的type属性值的不同,对状态进行不同的处理;
Reducer
处理完之后,返回一个新的值,最终Store
更新这个值;
因为View
订阅了Store
对应值的更新,因此当Store
更新时,会通知View
更新视图。
流程:
dispatch
方法,触发Action