介绍
redux-watch-immutable 是一个 JavaScript 库,它可以在 Redux 应用程序中监视 Immutable 对象的变化。使用该库,您可以轻松地跟踪应用程序用户界面中更改的数据,以及更改发生的时间。本文将介绍如何使用 redux-watch-immutable。
安装
要使用 redux-watch-immutable,您需要首先在项目中安装它。您可以使用 npm 安装它:
npm install --save redux-watch-immutable
使用
redux-watch-immutable 提供了一个 watch
函数,该函数可以用于监视 Redux 存储中的对象。要使用此函数,您需要将其添加到您的 Redux 存储并将其传递给 watch
函数:
-- -------------------- ---- ------- ------ - ----------- - ---- -------- ------ - ----- - ---- ------------------------ ----- ----- - --------------------- ----- ------- - ------ ------ ------------------ -------- ------- ----------- -- ------------------- ---------- ----------- -- ---------- -- ---- --------展开代码
上面的代码演示了如何使用 watch
函数监视 Redux 存储中的 state.addresses
对象。每当 State 中的 state.addresses
发生变化时,将打印出一条消息。
上述代码中, watch
函数会返回一个取消监视的方法。 值得注意的是,watch
函数返回值可以保存下来以在需要时取消监视。
深度监听
redux-watch-immutable 支持深层次的属性监听,以下是一个完整的例子:
-- -------------------- ---- ------- ------ --------- ---- ------------ ------ - ----------- - ---- -------- ------ - ----- - ---- ------------------------ ----- ------------ - ------------------ ------ - -- - ----- ----- ------- ---- -- - - --- ----- ------- - ------ - ------------- ------- -- - ------ ------------- - ---- ----------- ------ --------------------- ---- -------- ---------------- ---- ---------- ------ --------------------- ---- ------- ---------------- -------- ------ ------ - -- ----- ----- - --------------------- ----- ------- - ------ ------ ---------------- -------- ------- ----------- -- ------------------- ---------- ------------ ---- -- ------ ---- -------- -- ---------------- ----- ----------- -------- ----- ---- --- ---------------- ----- ---------- -------- -- --- ---------- -- ---- --------展开代码
上述代码中,我们定义了一个 Initial State 包含一个嵌套的用户对象,该对象的属性和值都有一个层次结构。我们使用 setIn
方法更新嵌套用户对象。
监听嵌套属性时,需要启用 deep 参数。这使得 redux-watch-immutable 监视指定路径下嵌套对象的所有属性。
总结
按照上述步骤,您可以开始在您的应用程序中使用 Redux watch Immutable。 请根据您的应用程序的需求使用该库的可能性探索。 记住,在使用 redux-watch-immutable 库时,深度监听是一个强大的工具,可以帮助您更准确地跟踪应用程序中数据的变化。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055c2c81e8991b448d9cc0