React-Redux 入门指南 --redux 和 react 数据流

阅读时长 6 分钟读完

React-Redux 是一个让 React 应用中使用可预测的数据流的库,它使得管理应用程序的状态变得更加容易。它是一个基于 Redux 的拓展库,因此我们需要首先理解 Redux。

Redux 和 React 数据流

在理解 Redux 和 React 之间的关系之前,我们需要先了解 React 中的单向数据流。

在 React 中,数据是从父组件向子组件流动的,子组件通常使用属性(props)来接收从父组件中传递的数据。然而,在大型应用程序中,组件几乎总是作为一个复杂的层次结构进行嵌套,数据的传递变得复杂而难以管理。实际上,更改数据的方式和传递方式经常因为一些边缘情况而弄错,从而导致不必要的 Bug 和错误。

Redux 提供了一种更加清晰和简单的数据流模式,这种模式在许多应用程序中被广泛使用。Redux 是一个单向数据流框架,其数据流非常明确且可预测,它保证了数据的流动方向始终是一致的。

Redux 的三个核心概念

Redux 基于三个核心概念:storeactionreducer

  • store: Redux 应用程序中保存数据的唯一地方。它不是一个普通的 JavaScript 对象, 也不是 Component,但类似于一个数据仓库,用于保存应用程序的状态或数据。

  • action: 在 Redux 中,action 是一个表示更改数据的简单对象,它通常包括一个文字类型和一些有效载荷数据。Action 可以通过 dispatch() 方法调用来触发器,从而通知 Redux 数据库的 Store 对象更新数据。

  • reducer: Reducer 实际上是一个纯函数,用于将旧的状态和 action 连接在一起,并返回新的状态。Reducers 是 Redux 应用程序的重要部分, RootState 可以通过 Redux 提供的 combineReducers() 方法来组合多个reducer。

为 React 应用程序添加 Redux

下面我们将演示如何使用 Redux 来构建一个简单的 React 应用程序。在这个应用程序中,我们将能够跟踪一个书籍清单的状态,用户可以添加新书籍,删除已有的书籍等。

安装 React-Redux 库:

创建一个新应用程序,创建一个 BooksList 的组件,在其中显示应用程序的当前状态。

-- -------------------- ---- -------
------ ----- ---- --------
------ - ------- - ---- --------------

----- --------- ------- --------------- -
  -------- -
    ------ -
      -----
        ----
          ---------------------------- ------ -- -
            --- -------------------------------
          ---
        -----
      ------
    --
  -
-

----- --------------- - ------- -- -
  ------ -
    ------ -----------
  --
--

------ ------- ------------------------------------

我们通过连接 React 的 connect() 函数实现将状态存储到组件属性中的关键部分。connect() 接收两个参数:mapStateToPropsmapDispatchToProps。其中 mapStateToProps 函数用于将 store 中的 state 映射到组件的 props,而 mapDispatchToProps 与组件的事件传递相关。

接下来,我们需要创建一个 reducer,来在应用程序中管理我们的书籍状态。

-- -------------------- ---- -------
----- ------------ - -
  ------ -
    - --- -- ------ ---- ---- -- --- ------ --
    - --- -- ------ ---- ------- --
    - --- -- ------ ------ ------ --- --- ----- -- -------- -
  -
--

----- ----------- - ------ - ------------- ------- -- -
  ------ ------------- -
    ---- -----------
      ------ - --------- ------ ---------------- --------------- --

    ---- --------------
      ------ - --------- ------ ------------------------- -- ------- --- --------------- --

    --------
      ------ ------
  -
--

------ ------- ------------

在我们的 reducer 中,我们定义了两个操作 ADD_BOOK 和 REMOVE_BOOK,。每个操作都会在我们的应用程序中触发不同的 action。例如,当 ADD_BOOK 操作被触发时,我们会将新书籍添加到状态中。

最后,我们需要配置 store 以便支持这些操作。使用下面的代码即可实现:

接下来,我们需要在 index.js 中导入应用程序的 store:

-- -------------------- ---- -------
------ ----- ---- --------
------ - -------- - ---- --------------
------ -------- ---- ------------

------ ----- ---- ----------
------ --------- ---- -------------------------

----------------
  --------- --------------
    ---------- --
  ------------
  --------------------------------
--

现在,我们的简单的书籍应用程序已经准备就绪。用户可以轻松地添加和删除书籍,并且 Redux 状态库将更新我们的应用程序,以便反映新的状态变化。

总结

学习 React-Redux 可以有效地提高开发大型 React 应用程序的效率,因为它可以为应用程序提供清晰和容易管理的数据流方案。在实际开发中,我们需要深入了解 Redux 的核心概念:store、action 和 reducer,并应用它们来构建应用程序的状态变化。本文中提供的示例应用程序可以作为您日后开发应用程序时的参考。

完整代码示例:https://github.com/shaoxy/react-redux-tutorial。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/652334c495b1f8cacdaa33cf

纠错
反馈