npm 包 redux-reconnect 使用教程

前言

在 React 的开发中,我们经常会用到 Redux 来管理应用状态。和 Redux 结合使用的一个常见库是 react-redux。其中的 connect 函数会根据传给它的一些参数,将 React 组件和 Redux 的 store 或者 action creator 关联起来,使组件能够从 store 中获取数据并且触发 action 来更新 store 中的数据。

但是,使用 connect 时我们需要手动传递一些参数,如 mapStateToProps 和 mapDispatchToProps。这样使得组件耦合了 Redux 的实现细节。而 redux-reconnect 就是为了解决这个问题而出现的。

redux-reconnect 可以让我们更好地封装组件的状态,使得状态只在组件内部被使用,从而使组件更加独立,更容易重用。如果你对 Redux 还没有完全掌握,可以先学习 Redux 的基本用法,再来看 redux-reconnect 的使用。

安装

可以通过 npm 安装 redux-reconnect:

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

使用方法

redux-reconnect 可以用于生成两个高阶组件:connectAction 和 connectState。

connectAction

connectAction 用于封装某个组件的 action_creator。我们假设有一个组件,它的 action_creator 如下所示:

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

我们想要将这个 action_creator 封装为一个高阶函数,使得该组件可以通过 this.props.increment() 和 this.props.decrement() 直接调用,而无需传递 dispatch 函数或者绑定 this。可以这样使用 connectAction:

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

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

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

这里的 actions 是一个对象,key 值对应了传给组件的 props。MyComponent 的原始 props 中没有 increment 和 decrement,但是通过 connectAction,这两个方法会被添加到 props 中。

connectState

connectState 用于封装某个组件的 mapStateToProps 函数。我们假设有一个组件,它的 mapStateToProps 函数如下所示:

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

我们想要将这个 mapStateToProps 函数封装为一个高阶函数,使得该组件可以通过 this.props.count 直接获取 count 属性的值。可以这样使用 connectState:

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

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

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

这里的 stateProps 函数返回一个对象,该对象会注入到 MyComponent 的 props 中。

示例代码

接下来,我们将演示如何使用 redux-reconnect 将一个计数器组件封装起来。完整的代码可以在 GitHub 上找到。

首先,我们需要创建一个 Redux store。在这个例子中,我们使用 Redux Toolkit 来简化创建和管理 Redux store 的流程。

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

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

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

接下来,我们定义一个计数器组件。该组件使用 connectAction 和 connectState 来访问 store 中的状态和 dispatch 方法。

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

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

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

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

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

这里我们传递两个参数,一个是 action 对象,另一个是 stateProps 函数。通过调用 connectState 和 connectAction 函数,我们获得了一个新的组件:connectState(stateProps)(connectAction(actions)(Counter))。

最后,我们将 store 和组件传递给 Redux Provider。

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

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

现在,我们可以在浏览器中看到计数器组件,并修改 store 中的状态了。

结语

redux-reconnect 使得我们可以更加方便地封装组件的状态和 action creator。通过使用 redux-reconnect,我们可以降低代码的耦合性,便于重用,并且使得我们的组件更加聚焦于问题本身。

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


猜你喜欢

  • npm 包 serverless-assets-local 使用教程

    简介 随着云计算的不断发展,Serverless 架构越来越盛行,以 AWS 为代表的各大云厂商也为 Serverless 架构提供了支持。但是在开发过程中,总会有一些需要本地调试的场景,比如说需要加...

    3 年前
  • npm 包 asm-async-loader 使用教程

    简介 asm-async-loader 是一个适用于前端的异步加载器,在运行时异步加载 .asm.js 文件,减少初始化时间和提高应用性能。 本篇文章将详细介绍 asm-async-loader 的使...

    3 年前
  • npm 包 jia-utils 使用教程

    简介 jia-utils 是一款基于 JavaScript 的前端工具库,可以帮助开发者提高开发效率、简化开发流程。其包含了很多实用的工具函数,比如字符串处理、日期处理、数据类型判断等。

    3 年前
  • npm 包 bookclubz-axios-mock-adapter 使用教程

    简介 bookclubz-axios-mock-adapter 是一个用于前端开发中模拟 AJAX 请求的 npm 包。它提供了使用 Axios 作为 AJAX 库时,方便地在前端代码中模拟响应数据的...

    3 年前
  • npm 包 React-win-dialog 使用教程

    React-win-dialog 是一个 React 的 UI 组件,提供了易于使用的窗口对话框。npm package 的使用方式为: npm install react-win-dialog 本文...

    3 年前
  • npm 包 syncdb 使用教程

    在前端开发中,数据库是一个非常重要的组成部分。与之相关的数据库同步工具也成为了开发的必备工具之一。在众多的工具中,npm 包 syncdb 是一个值得一提的工具,它可以帮助开发者实现数据的同步工作,并...

    3 年前
  • npm 包 angular2-masonry-next 使用教程

    前言 在前端开发中,我们经常需要使用一些第三方库来实现一些常用的功能,如响应式布局等。今天我们来介绍一个 npm 包,angular2-masonry-next,用于帮助我们实现瀑布流布局。

    3 年前
  • npm 包 googlecli 使用教程

    简介 googlecli 是一个基于 Node.js 开发的命令行工具,通过它,我们可以轻松地使用 Google Cloud Platform(GCP)的 API,并进行许多相应的操作,如检索搜索数据...

    3 年前
  • npm 包 downloader-cli 使用教程

    在前端开发中,我们经常需要下载一些依赖库或者资源文件,手动下载费时费力,这时就能用到 npm 包 downloader-cli。downloader-cli 是一个命令行工具,可以通过命令行下载任何文...

    3 年前
  • npm 包 rebracket 使用教程

    什么是 rebracket rebracket 是一个处理括号嵌套关系的 npm 包。在前端开发中,处理括号嵌套关系经常是必须的任务,比如说在编写编译器、解析器、代码压缩等应用程序中。

    3 年前
  • npm 包 `conversor_kg-lb` 的使用教程

    conversor_kg-lb 是一款用于在前端页面中进行公制与英制单位之间的转换的 npm 包。本文将会介绍如何使用 conversor_kg-lb 包以及该包的使用方法和示例代码。

    3 年前
  • npm 包 homebridge-ambientlight 使用教程

    如果你正在寻找一种又简单又方便的方法来控制你家中的灯光,那 homebridge-ambientlight 就是你需要的 npm 包。本文将为大家介绍 homebridge-ambientlight ...

    3 年前
  • npm 包 jdesign-alert 使用教程

    随着前端技术的不断发展,我们可以使用越来越多的 npm 包来简化工作流程。在本文中,我们将重点介绍一个名为 jdesign-alert 的 npm 包,它可以帮助开发者更方便地实现弹出框的功能。

    3 年前
  • npm 包 jdesign-alink 使用教程

    前言 在今天的前端项目开发中,我们往往不会重复从头编写一段功能完备的代码,而是会选择通过 npm 包来导入它,这样可以大大提升代码的复用性和开发效率。jdesign-alink 就是一个优秀的 npm...

    3 年前
  • npm 包 mami 的使用教程

    前言 在前端开发中,我们经常需要使用一些库或者工具来简化我们的代码或者提高我们的效率。 mami 就是这样一个可以帮助我们提高效率的 npm 包。它提供了一些非常实用的工具函数,比如处理 DOM 的方...

    3 年前
  • npm 包 satellites 使用教程

    什么是 satellites? satellites 是一个基于 React 的 UI 库,拥有众多的已经封装好的组件和样式,可以帮助前端开发者更快速地搭建出美观、高效的交互界面。

    3 年前
  • npm 包 homebridge-applescript-status 使用教程

    介绍 homebridge-applescript-status 是一个基于 npm 的包,用于在苹果电脑上使用 homebridge 控制家庭智能设备时,获取使用苹果脚本编写的状态信息。

    3 年前
  • npm包 homebridge-rpi-garagedoor-liftmaster 使用教程

    前言 随着智能家居的兴起,很多家庭都开始将家里的电器和家居进行智能化管理。而智能化管理的核心,便是通过软件与硬件的结合,实现远程控制和自动化操作。因此,在智能家居中,npm包 homebridge-r...

    3 年前
  • npm 包 JDesign-Button 使用教程

    在前端开发中,按钮是必不可少的组件之一。为此,NPM 包中有很多适用于不同场景下的按钮框架。在这篇文章中,我们将介绍 JDesign-Button,这是一款高度可定制的按钮组件,可以实现多种样式和功能...

    3 年前
  • npm 包 small-template 使用教程

    在前端开发过程中,我们经常需要在代码中实现复杂的文本替换和字符串拼接操作。虽然 JavaScript 自带一些字符串处理方法,但会存在一些繁琐的操作。因此,我们可以依靠 npm 平台上各种第三方包来辅...

    3 年前

相关推荐

    暂无文章