npm 包 redux-reducerless 使用教程

简介

redux-reducerless 是一个让你在 Redux 中使用类似于 Context API 的方式管理应用状态的库。相比传统的 Redux,它省略了 reducer 的使用,让代码更加简洁易懂,降低了代码复杂度。

安装

你可以使用 npm 或 yarn 安装 redux-reducerless:

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

用法

在使用 redux-reducerless 之前,需要先安装 redux:

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

安装完毕后,我们来看一个简单的例子:

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

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

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

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

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

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

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

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

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

在上面的代码中,我们使用了 reducerlessStoreEnhancer 生成了一个 store,它让我们可以不用 reducer 直接管理状态。我们也用 useLanguage 这个自定义 Hook 封装了一个功能,让我们可以在组件中方便地获取和修改应用语言。

现在,我们把 useApp 这个 Hook 引入到我们的组件中:

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

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

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

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

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

在上面的代码中,我们使用了 useApp 这个 Hook 获取了 useLanguage 这个 Hook,然后在组件中使用这个 Hook 来获取当前的应用语言和修改语言的方法。在 JSX 中,我们展示了当前的语言,并且使用一个按钮来切换语言。

现在我们启动应用,你会发现每次点击按钮,应用的语言就会从中文和英文之间不断地切换。

源码解析

如果你对 redux-reducerless 的源码实现感兴趣,可以看一下 reducerlessStoreEnhancer 的实现:

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

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

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

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

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

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

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

通过这段代码,我们可以看到 reducerlessStoreEnhancer 实际上返回了一个 function,这个 function 接受 createStore 这个函数作为参数,并返回了一个新的 createStore。

在返回的新的 createStore 中,我们使用了原 createStore 中的 preloadedState 和 enhancer,然后生成了一个新的 store。同时,我们定义了一个 subscribers 集合,用于保存所有的监听器信息。

在新的 store 中,我们重写了原有的 subscribe、getState 以及 dispatch 方法。在 subscribe 方法中,我们只是简单地把传入的 listener 加入到 subscribers 集合中。在 getState 方法中,我们从 store 中获取 state,并返回。而在 dispatch 方法中,我们首先遍历 subscribers 集合,然后给每一个 listener 发送一个 action。

由于 subscribers 集合在每一次 dispatch 操作中都会被遍历,因此,我们可以保证每一次修改 state 都会触发所有的监听器。

总结

在本篇文章中,我们介绍了 redux-reducerless 这个 npm 包,并通过一个实际的例子来演示了它的使用方法。我们也讲解了 redux-reducerless 的实现原理,并重写了 subscribe、getState 以及 dispatch 这三个方法,完成了实时监测 state 变化的功能。通过使用 redux-reducerless,我们可以更加简洁地管理应用状态,降低代码的复杂度,使得代码更加易懂易维护。

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


猜你喜欢

  • npm 包 validatets 使用教程

    在前端开发中,我们经常需要进行各种数据的校验,包括但不限于用户名、密码、手机号等等。而在大多数情况下,我们都需要通过手动编写校验函数来完成这一过程。如果你觉得这一过程十分繁琐,那么推荐一款 npm 包...

    3 年前
  • npm 包 bool-emojify 使用教程

    前言 在编写前端代码的过程中,我们经常需要处理与布尔型相关的逻辑。而在表达布尔型变量时,使用文字描述可能比较单调,往往需要借助一些图片或符号来增强表现力。这时,bool-emojify 库就能发挥它的...

    3 年前
  • npm 包 clear-temp 使用教程

    在进行前端开发的过程中,我们可能会产生一些临时文件或缓存,这些文件会占用我们的磁盘空间并且降低我们电脑的性能。为了解决这个问题,就可以通过使用 npm 包 clear-temp 来清除这些临时文件。

    3 年前
  • npm包dt-info使用教程

    前言 在前端开发过程中,我们经常会使用许多npm包来提高开发效率和功能性。其中,dt-info这个npm包可以用于获取浏览器、操作系统、和设备的详细信息。本文将详细介绍dt-info包的安装、使用和示...

    3 年前
  • npm 包 simple-inline-styles 使用教程

    在前端开发中,我们经常需要动态地改变元素的样式。使用 JavaScript 直接操作元素的 style 属性是个常见的做法,但是这种方式比较繁琐,容易出错,且不利于代码的维护。

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

    什么是 utils-lite utils-lite 是一款基于 JavaScript 开发的 npm 包,它是一个轻量级的工具库,可以帮助前端开发者在项目中更加高效地编写代码。

    3 年前
  • npm 包 create-reactjs-component 使用教程

    在前端开发中,React 是一款优秀的前端框架,为了更加方便的开发 React 组件,npm 上有一款非常实用的包,就是 create-reactjs-component,今天就来详细介绍如何使用这个...

    3 年前
  • npm 包 zenhub-api 使用教程

    引言 在前端开发过程中,经常需要用到各种不同的库和工具,但是有些时候我们并没有太多时间去从头开始设计和实现这些组件。在这样的情况下,我们可以使用开源的 npm 包来帮忙快速搭建项目。

    3 年前
  • npm 包 chrome-ext-render 使用教程

    导语 当我们需要对 Chrome Extension 进行 UI 或者数据分析时,可以借助 Chrome Extension Content Script 的能力来在页面和 DOM 上操纵。

    3 年前
  • npm 包 gulp-inline-html 使用教程

    近年来,前端开发中越来越多的项目需要将 HTML、CSS、JavaScript等文件转换并打包成最终的静态资源部署在 Web 服务器上。其中,将 HTML 文件中的 CSS 和 JavaScript ...

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

    什么是 async-decorator async-decorator 是一个能够将普通函数转化为 async 函数的 npm 包,可以帮助开发者更方便地处理异步操作。

    3 年前
  • npm 包 @parthar/express-rbac 使用教程

    前言 在 Web 开发中,很多应用都需要进行权限管理。常见的做法就是通过角色授权(Role-Based Access Control,简称 RBAC)来管理用户的权限。

    3 年前
  • npm 包 generator-component-react 使用教程

    在开发 React 前端项目时,我们常常需要编写很多组件。而编写组件的过程会有很多重复性的工作,例如创建组件文件夹、编写组件的样式和方法等。这些工作虽然看似简单,但却很容易出错,而且很浪费时间。

    3 年前
  • npm 包 NPZ 使用教程

    在前端开发中,我们常常会使用一些 npm 包来提升我们的工作效率。其中,NPZ 是一个非常有用的 npm 包,它可以帮助我们快速地打包我们的前端代码,并将其上传到服务器上。

    3 年前
  • npm 包 ascom-chartist-logscale 使用教程

    介绍 ascom-chartist-logscale 是一个用于实现日历和对数比例尺的 Chartist.js 插件。它提供了一种简单的方法来渲染对数比例尺和时间序列上的数据,并支持对数坐标轴的缩放和...

    3 年前
  • npm 包 react-upload-progress 使用教程

    介绍 在 Web 开发中,文件上传功能是非常常见的需求,但是默认的上传控件使用起来不太方便,并且无法展示上传进度。这时候我们可以使用第三方的上传组件来简化上传流程,其中 react-upload-pr...

    3 年前
  • npm 包 koa2-oauth-server 使用教程

    前言 随着 Web 应用的日益普及,越来越多的网站和应用程序都开始提供用户注册、登录等功能,这些功能通常依赖于 OAuth 2.0 协议来实现。OAuth 2.0 是一种授权协议,允许一个应用程序访问...

    3 年前
  • npm 包 notice-puge 使用教程

    什么是 npm 包 notice-puge? notice-puge 是一个基于 Vue.js 开发的轻量级通知组件,它支持多种通知类型,包括成功、警告、错误以及信息。

    3 年前
  • npm 包 gatsby-plugin-tawk 使用教程

    在网站中添加实时聊天功能是非常有用的。tawk.to 是一个免费的实时聊天软件,可以帮助网站提供商业支持,并且能够增强用户与网站之间的交互。 Gatsby 是一个流行的静态网站生成器,可以帮助我们快速...

    3 年前
  • npm 包 react-grid-blues 使用教程

    简介 react-grid-blues 是一个轻量级的 React 表格组件,用于呈现数据、支持排序、筛选、分页和自定义样式。它基于 React Hooks 实现,易于拓展,并提供了丰富的 API 和...

    3 年前

相关推荐

    暂无文章