NPM 包 redux-extract-state 使用指南

NPM 包 redux-extract-state 使用指南

在前端开发中,Redux 已经变成了一个非常常用的状态管理工具。但是在实际开发中,我们有时候只需要获取其中一部分状态,而不是整个状态树。这时,redux-extract-state 这个 NPM 包就可以帮助我们从整个状态树中提取所需的状态。

redux-extract-state 是一个用于提取 Redux 状态树中指定部分状态的 JavaScript 工具库。在使用这个工具库的过程中,你将会学到如何从 Redux 状态树中提取所需的状态,并能够灵活地运用这个工具来实现自己的需求。

安装和导入

要使用 redux-extract-state,必须安装它。可以使用以下命令:

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

安装完成后,可以像下面这样在项目中导入它:

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

执行这个导入语句后,你就可以使用它提供的方法了。

基础用法

redux-extract-state 的基础用法非常简单。只需要传入状态树和一个函数,函数的返回值将会作为提取后的状态,示例如下:

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

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

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

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

上面的示例中,我们传入一个状态树和一个函数,函数返回了状态树中 counter 对象。最终打印出来的结果就是一个仅包含 value 属性的对象。我们从整个状态树中提取出了一个自定义的对象,并将其作为提取后的状态返回了出来。

另外一种语法

redux-extract-state 也提供了另外一种语法来做同样的事情。这种语法相较于上面的语法更加简单,只需要传入要提取的状态树路径即可。示例如下:

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

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

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

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

上例中,我们可以看到使用相对路径来提取状态树。

深度提取状态

redux-extract-state 还支持深度提取状态,可以方便地获取深层次的状态。为了说明这个问题,我们先看一下下面这个示例:

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

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

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

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

在我们的例子中,counter 对象有一个 details 对象,该对象又包含 idmessage 两个属性。使用上面的方法,我们可以获取 counter 对象中深层次的 details 对象,并将其提取出来成为一个新的状态。

实战:使用 redux-extract-state 来管理 Redux 状态

了解了 redux-extract-state 的基础用法后,我们可以应用它来实现有意思的事情。在接下来的例子中,我们将创建一个管理 Redux 状态树的示例。

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

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

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

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

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

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

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

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

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

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

在这个例子中,我们创建了一个 Redux store,并为其指定了初始状态和一个 reducer。然后我们构建了两个选择器函数来提取出 usersmovies 这两个状态。

最后我们在 store 上注册了一个订阅函数,来监听 store 的变化。每当 store 的状态发生变化时,我们都会调用 extractState 来提取出 usersmovies 这两个状态,并打印它们。

小结

redux-extract-state 是一个非常实用的 Redux 工具库,可以帮助我们从 Redux 状态树中提取出需要的部分,来简化我们的开发工作。通过本篇文章的介绍,你应该能够掌握其基本用法,并能够合理运用它来管理 Redux 状态。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6006700ce361a36e0bce8c7a


猜你喜欢

  • npm 包 spn-push-package 使用教程

    前言 在前端开发中,我们经常需要将我们的代码打包成可供部署的静态文件。除了常规的打包方式,我们还可以使用 spn-push-package 来将静态资源推送到云端,以便更好的提高程序性能和可靠性。

    4 年前
  • npm 包 spectre-client 使用教程

    在前端开发中,我们经常需要使用各种功能强大的第三方库来实现复杂的功能。而 npm 包是一种常见的第三方库管理方式,相比于手动下载和引入,npm 包方式更加高效、方便和规范。

    4 年前
  • npm包spectre-css使用教程

    在前端开发中,我们经常需要使用现成的CSS框架来加速开发,提高开发效率。Spectre是一款现代CSS框架,它非常轻量级、易于使用,适用于Web开发中所有大小项目。

    4 年前
  • npm 包 spectre-vue 使用教程

    NPM是一个非常流行的Node.js包管理器,它允许开发人员在项目中轻松安装依赖项。 spectre-vue是一个Vue.js UI 库,它提供了一系列精美的UI组件,可以让开发人员轻松构建漂亮的We...

    4 年前
  • npm 包 spectreport 使用教程

    随着前端技术的不断发展,我们使用的工具也在不断地增加和更新。其中,npm 包是前端开发中常用的一种工具,它为我们提供了这样一种方式:通过下载已经存在的组件,而不是从头开始构建它们。

    4 年前
  • npm包`sprity-cli`使用教程

    前言 前端开发中,我们经常会使用雪碧图(sprite),以减少HTTP请求的数量,提高网站的性能。如果你还在用手动合成雪碧图的方式,那么这篇文章可能会对你有所帮助。

    4 年前
  • npm 包 spectre-test-runner 使用教程

    作为前端开发人员,我们需要经常进行单元测试,以确保我们的代码在实现功能的同时也具备可靠性和鲁棒性。而 spectre-test-runner 正是一款运行在 Node.js 环境中的测试工具,用于帮助...

    4 年前
  • npm 包 `spectre.css-stylus` 使用教程

    简介 spectre.css-stylus 是 spectre.css 的 stylus 语言实现,并且可以直接使用 npm 安装,方便了前端开发者使用这个 CSS 框架。

    4 年前
  • npm 包 spectree 使用教程

    介绍 spectree 是一个开源的、基于 Node.js 的 REST 客户端库,它支持自动生成 API 文档和模拟请求。使用 spectree,您可以直接在本地进行 API 开发和测试。

    4 年前
  • npm 包 sprity-css 使用教程

    简介 在前端开发中,为了提升网站性能,我们通常将多张小图片合成一张大图,再用 CSS 中的 background-position 属性将所需部分剪辑出来。sprity-css 就是一个可以帮助我们实...

    4 年前
  • npm 包 sprity-dirs 使用教程

    1. 简介 sprity-dirs 是一个 npm 包,用于将图片文件夹中的图片自动合并成一个雪碧图,并生成对应的 CSS 文件。通过使用雪碧图,可以减少 HTTP 请求,提高网页加载速度。

    4 年前
  • npm 包 sprity-gm 使用教程

    简介 sprity-gm 是一个 npm 包,可以帮助前端开发者快速生成雪碧图。相比于其他类似的 npm 包,sprity-gm 可以使用 GraphicsMagick,这意味着生成的雪碧图文件大小更...

    4 年前
  • npm 包 sprity-css-rollover 使用教程

    前言 在前端开发中,图片资源的制备是必不可少的一个环节。常常我们需要制作一系列的样式图表,并以不同的状态来呈现不同的样式,比如说鼠标悬停时的样式、选中时的样式等等。

    4 年前
  • npm 包 sprity-json 使用教程

    什么是 sprity-json sprity-json 是一个 npm 包,它可以将多张图片合并成一个雪碧图,并且生成对应的 CSS 文件,让前端开发人员更方便地使用雪碧图。

    4 年前
  • npm 包 sprity-cy 使用教程

    简介 sprity-cy 是一个能够将多张图片合并成一张雪碧图并自动生成 CSS 样式的 npm 包。该包具有以下特点: 支持多种图片格式,如 png、jpeg、gif、svg 等; 支持多种 CS...

    4 年前
  • npm 包 sprity-less 使用教程

    前言 在前端开发过程中,我们常常需要进行图片的处理,如图片压缩、合成等等。针对这个问题,开发者们便开发出了许多方便的工具和框架。其中一个非常常用的工具就是 sprity-less。

    4 年前
  • npm 包 spectrometer 使用教程

    简介 Spectrometer 是一个用于检测 Web 页面代码质量的工具。它可以帮助前端开发人员检查代码中存在的问题,例如 JavaScript 错误、性能问题、安全漏洞等等。

    4 年前
  • npm 包 spectron-exec 使用教程

    前言 在前端开发中,常常需要进行 UI 自动化测试,以保证产品的质量。而这种测试需要依赖于一些工具和库,其中之一就是 spectron-exec ,它是一个用于测试 Electron 应用程序的 np...

    4 年前
  • npm 包 sprity-krpano-xml 使用教程

    前言 如今,Web 开发已经成为人们日常生活中不可或缺的一部分。为了实现更加高效且优质的开发,前端工程师们也在不断研究和开发新的技术和工具。其中,npm 包是前端开发非常重要的一部分。

    4 年前
  • npm 包 spectron-fake-menu 使用教程

    什么是 spectron-fake-menu? spectron-fake-menu 是一个用于模拟 Electron 应用程序中上下文菜单的 npm 包。它是基于 Spectron 的上下文菜单模拟...

    4 年前

相关推荐

    暂无文章