📅  最后修改于: 2023-12-03 15:04:52.856000             🧑  作者: Mango
Redux是一个用于JavaScript应用程序的可预测状态容器。它帮助存储应用程序的状态,并且保持状态的更新和修改都在可控范围内。
Redux架构中的核心概念是,应用程序状态存储在单个store对象中。这将保持所有应用程序的状态在一个地方,方便管理和操作。Redux中的状态是以immutable的方式存在的,也就是说,状态是不可修改的。所有的修改都是通过创建新的状态对象来实现的。
Redux的三个主要构建块:
Store
Action
Reducer
在Redux中,reducer扮演着至关重要的角色,因为它们是用于更新应用程序状态的唯一途径。reducer的目的是接收一些之前的状态和一个action,然后它返回一个更新后的新的状态。显而易见,reducer函数对应的返回值需符合纯函数的定义。
纯函数是指函数具有如下形式
function pureFunction(input){
// some operations on input
return output;
}
严格符合定义的纯函数,不会更改它的输入,也不会在函数执行期间引起任何副作用。这意味着,纯函数的输出只受到输入的影响。
在Redux中,reducer被定义为一个纯函数,它的唯一目的是更新应用程序状态。这意味着在reducer中不允许使用异步操作、localStorage和其他涉及到副作用的操作。相反,它应该严格地利用其输入参数,并返回新的状态对象。
举个例子:
function userReducer(state = initialState, action) {
switch (action.type) {
case 'UPDATE_NAME':
return {
...state,
name: action.payload
};
case 'UPDATE_AGE':
return {
...state,
age: action.payload
};
default:
return state;
}
}
在这个例子中,userReducer是由Redux调用的纯函数。它给出当前状态和接收到的action,并返回一个新的更新后的状态。state是一个对象,当更新名称或年龄时,将使用运算符...语法来复制上一个状态并更新对应键的值。
由于这个reducer是一个纯函数,所以它不会在代码中引入任何副作用。您可以信赖它的输出,因为它严格地遵循输入和输出之间的映射。
Redux是一个JavaScript应用程序的状态容器,其核心是Store,Action和Reducer。在Redux中,Reducer是一个纯函数,用于更新应用程序状态。Reducer仅仅依赖于输入参数,并返回新的状态对象,在函数执行期间不会产生任何副作用。这使得在应用程序运行时,存储的状态更加可预测,因为它永远不会从Reducer外部更改。