Redux 如何管理 immutable 数据

阅读时长 4 分钟读完

什么是 Redux?

Redux 是一个 JavaScript 应用程序状态管理库,它用于管理随时间变化的应用程序状态。它可以与任何 JavaScript 应用程序一起使用,但它与 React 组件非常配合,因为它们都使用相同的数据流模式。

在 Redux 中,状态被存储在单个对象中,这个对象被称为“store”。 React 组件可以获取并使用该状态,通过“actions”来修改该状态。 一个 action 是一个纯 JavaScript 对象,其中包含将要对状态做出的更改。 在 Redux 中,应用程序发布一个 action,然后 Redux 中的 Reducer 进行计算并返回新的应用程序状态。

为什么要用 Immutable 数据?

Redux 与 Immutable.js 的结合使用是一个很普遍的选择。 Immutable 数据的好处是它们是不可变的,这意味着数据一旦被创建就不能被修改。这些数据可以被在应用程序的整个生命周期中被安全的使用。这使得数据很容易缓存,回滚和跟踪更改。

由于它们不可变,我们可以在两个不同的组件之间共享它们,并且不必担心其中一个组件意外更改这些数据的值。如果有需要对这些数据进行更改,一定要使用 Immutable 的 API 来进行更新。举个例子:使用 Immutable.Map.set 方法来实现更新一个 key 对应的值。

如何在 Redux 中管理 Immutable 数据

Redux 默认是使用普通的 JavaScript 对象来管理应用程序状态的,但由于我们可以选择结合 Immutable.js 的使用,我们也可以使用 Immutable 对象来存储状态。下面展示了如何使用 Immutable.js 来创建一个 Redux Store.

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

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

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

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

在上面的代码中,我们将我们的应用程序状态存储在一个 Immutable Map 中,并在 Reducer 中使用 Immutable API 来操作我们的数据。

store.getState() 方法将返回不可变的对象,因此我们需要使用 Immutable.js API 来访问状态中的各个部分。

最后,如果我们需要修改状态,我们需要 dispatch 一个 Action 来告诉 Reducer 我们需要更新应用程序状态。

在上面的代码中,我们 dispatch 了一个 ADD_USER Action,它会将一个新用户添加到我们的状态中。

总结

Redux 是一个非常好的状态管理库,而结合 Immutable.js 的使用更是提高了数据的高效性和安全性。Immutable 的数据不仅是不可变的,还有能够轻松回滚、跟踪更改,而且在共享数据方面使用起来更加的安全性。

总之,Redux + Immutable.js 的组合是非常强大和常用的,我们需要熟练的掌握其中的使用技巧,以便更加高效、简洁的构建我们的应用程序。

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

纠错
反馈