📜  Redux-纯函数(1)

📅  最后修改于: 2023-12-03 15:04:52.856000             🧑  作者: Mango

Redux-纯函数

什么是Redux?

Redux是一个用于JavaScript应用程序的可预测状态容器。它帮助存储应用程序的状态,并且保持状态的更新和修改都在可控范围内。

Redux架构中的核心概念是,应用程序状态存储在单个store对象中。这将保持所有应用程序的状态在一个地方,方便管理和操作。Redux中的状态是以immutable的方式存在的,也就是说,状态是不可修改的。所有的修改都是通过创建新的状态对象来实现的。

Redux的三个主要构建块:

  1. Store

  2. Action

  3. 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外部更改。