随着应用程序的规模和范围的增长,管理共享数据变得很困难。Redux被定义为“JavaScript应用程序的可预测state的容器”,有助于确保应用程序可预测地工作,更易于测试。接下来我们一起看看,Redux存储、操作、缩减器、中间件管理整个应用程序数据。
Redux是一个状态管理框架,可以与许多不同的web技术一起使用,包括React。在Redux中,只有一个状态对象负责应用程序的整个state。这意味着,如果有一个包含10个组件的React应用程序,并且每个组件都有自己的本地state,则应用程序的整个state将由Redux存储中的单个状态对象定义。当涉及到应用程序state时,Redux存储(Redux store)是唯一的真值来源。这也意味着,任何时候我们的应用程序的任何部分想要更新state,它都必须通过Redux store进行更新。单向数据流使我们更容易在应用程序中跟踪状态管理。
Redux store是一个保存和管理应用程序state的对象。Redux对象上有一个名为createStore()的方法,用于创建Redux store;此方法将reducer函数作为必需参数。声明一个“store”变量并将其赋值给createStore()方法,将reducer作为参数传入:
const reducer = (state = 5) => { return state; } let store= Redux.createStore(reducer);
Redux store对象提供了几种方法,允许我们与它进行交互。如,可以使用getState()方法检索Redux store对象中保存的当前state。上面的例子可以更简洁地重写:
const store = Redux.createStore( (state = 5) => state ); /*使用store.getState()从store中检索state,并将其分配给一个新变量currentState*/ let currentState=store.getState();
由于Redux是一个状态管理框架,更新state是其核心任务之一。在Redux中,所有state更新都由dispatching action触发。一个动作(action )只是一个JavaScript对象,它包含有关已发生的动作事件的信息。Redux store接收这些动作对象,然后相应地更新其state。有时,Redux动作也会携带一些数据。例如,用户登录后,该动作会携带用户名。虽然数据是可选的,但动作必须带有“type”属性,该属性指定发生的动作的“type”。将Redux动作视为通信员,通信员将应用程序中发生的事件信息传递到Redux store,然后,store根据发生的动作进行更新state的业务。
编写Redux action就像定义一个带有type属性的对象一样简单:
// 定义一个action: let action={ type:'LOGIN' } /*声明一个对象“action”,并将属性“type”设置为字符串“LOGIN”*/
。。。
标签:应用程序,state,action,相关,Redux,type,store From: https://www.cnblogs.com/168-h/p/16826138.html