npm 包 @supcon/redux-undo-redo 使用教程

介绍

在前端应用中,我们通常会使用 Redux 来管理应用的状态。而在 Redux 中,有一个非常重要的概念,那就是状态的不可变性。这意味着我们不能直接修改状态,而是需要通过 dispatch 一个 action 来修改状态。

但是这种方式有一个缺点,就是当我们需要撤销或者重做某些操作时,比如撤销上一次删除操作,或者重做上一次撤销操作,我们需要手动编写相应的代码来实现。而 @supcon/redux-undo-redo 包则为我们提供了这样一种功能,可以帮助我们轻松地实现撤销和重做功能。

安装

我们可以通过 npm 来安装 @supcon/redux-undo-redo 包。在项目的根目录下,执行以下命令即可:

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

安装完成之后,我们需要在 Redux 的 store 中使用该包提供的相关中间件。

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

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

使用

1. 配置

我们可以在 createStore 函数的第二个参数中传入 @supcon/redux-undo-redo 中间件来启用其功能。此时需要注意几个配置项:

  • maxHistory 为撤销和重做的最大限制次数;
  • debug 用于开启调试模式。
------ ------------------ ---- --------------------------

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

2. 撤销操作

当我们需要撤销上一次操作时,我们可以 dispatch 一个 type 字段为 @@redux-undo/UNDO 的 action。

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

此时,redux-undo 会找到上一次的 action,将其执行的结果还原,并将当前状态更新为上一次的状态。并在调试模式下输出相关信息。

3. 重做操作

当我们需要重做上一次撤销的操作时,我们可以 dispatch 一个 type 字段为 @@redux-undo/REDO 的 action。

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

此时,redux-undo 会找到下一次的 action,将其执行的结果应用到当前的状态中,并将当前状态更新为下一次的状态。并在调试模式下输出相关信息。

4. 定制化操作

除了使用默认的撤销和重做操作以外,我们还可以通过定制化的方式来实现自己的操作。

我们可以在创建 store 的时候,在配置信息中添加 onUndoonRedo 两个钩子函数。当我们执行撤销或者重做操作时,redux-undo 就会自动调用这两个函数。

例如,我们可以在执行撤销操作时,打印出要撤销的操作的相关信息。

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

示例代码

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

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

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

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

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

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

输出结果:

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

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


猜你喜欢

  • 使用 postcss-mixins-collection

    在前端开发中,样式表中经常会使用到大量的重复代码。一种解决方式就是使用 mixin,可以将重复的样式代码封装到一个 mixin 中,然后在需要使用这些样式的地方直接引入 mixin。

    3 年前
  • npm 包 webpack-hot-module-monitor 使用教程

    概述 在前端开发中,Webpack 是现代前端开发技术不可或缺的一个必备工具。它可以将多个文件打包成一个或多个文件,实现模块化开发的同时,还可以进行代码压缩、图片优化等优化操作。

    3 年前
  • npm 包 slidetoggle 使用教程

    在 Web 前端开发中,动态控制元素的展开和收起是非常常见的需求,例如实现折叠文本、切换菜单等功能。而 slidetoggle 这个 npm 包就提供了一种简单、易用的实现方案。

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

    随着前端开发的不断壮大,Node.js的流行,越来越多的前端开发人员开始关注和学习Node.js,同时也开始使用Node.js的生态系统中的工具和框架来开发自己的项目。

    3 年前
  • npm 包 hoo-inject-html-webpack-plugin 使用教程

    前言 hoo-inject-html-webpack-plugin 是一款在 webpack 打包时注入 JS、CSS、meta 等标签到 HTML 文档中的 webpack 插件。

    3 年前
  • npm 包 joi-extension-enums 使用教程

    在日常的前端开发工作中,我们常常需要对用户输入的数据进行验证。这时候,我们常常会用到 Joi 这个 JavaScript 的库来对输入的数据进行校验。在实际项目中,我们往往需要对某些字段进行枚举值的检...

    3 年前
  • npm 包 request-destination 使用教程

    在前端开发过程中,经常需要通过网络请求获取数据并在页面上展示。npm 包 request-destination 是一个可以帮助我们发送 HTTP 请求的库,它使用起来非常简单,本文将对其使用方法进行...

    3 年前
  • npm 包 ojaskulkarni-js-footer 使用教程

    在前端开发中,我们经常需要为网站添加页脚。虽然从头编写页脚不是很困难,但是可以通过使用现有的 npm 包来简化这一过程。其中一个值得一提的包是 ojaskulkarni-js-footer。

    3 年前
  • npm 包 react-native-google-analytics-bridge-meifacil 使用教程

    前言 移动端应用的数据分析无疑是一项重要的工作,而 Google Analytics 就是一个功能强大的工具。在 React Native 开发中,react-native-google-analyt...

    3 年前
  • npm 包 markdown-it-toc-x3 使用教程

    什么是 markdown-it-toc-x3? markdown-it-toc-x3 是一款基于 markdown-it 的 TOC(目录)插件,它不仅支持默认的 TOC 生成,还支持更为灵活定制的 ...

    3 年前
  • npm 包 @chix/chit 使用教程

    简介 在前端开发过程中,我们需要使用许多第三方库来实现特定的功能。npm 是目前最流行的 Node.js 包管理工具,可以帮助我们快速地安装和更新需要的第三方库。而 @chix/chit 是一款基于 ...

    3 年前
  • npm 包 @oresoftware/git.tools 使用教程

    简介 npm 是 Node.js 的包管理工具。npm 包 @oresoftware/git.tools 是一个可以帮助前端开发人员在 git 操作上更方便快捷的工具。

    3 年前
  • npm 包 @tidbits/pipe 使用教程

    在前端开发领域中,我们经常需要将数据从一种格式转换为另一种格式,并且这个转换过程通常涉及多个步骤。这时候,管道(pipe)就是一个非常有用的工具,它能够简化数据转换的过程,同时提高代码的可读性和可维护...

    3 年前
  • npm 包 `parrot-mocker` 使用教程

    介绍 parrot-mocker 是一个全局的命令行工具,它可以实现对接口进行模拟,并支持数据的动态生成,是前端开发中非常实用的工具之一。 安装 在安装之前,需要先安装 Node.js。

    3 年前
  • npm 包 amqplib-retryable 使用教程

    简介 amqplib-retryable 是一个基于 amqplib 封装的 npm 包,主要用于 RabbitMQ 消息队列的接入。该包可以实现自动重试机制的消息发送,保证消息的可靠性。

    3 年前
  • npm 包 builder-pattern-es6 使用教程

    什么是 builder-pattern-es6 builder-pattern-es6 是一个 npm 包,它提供了一种 builder pattern(构建器模式)的实现方式,使得创建对象的流程更加...

    3 年前
  • NPM包vue2-social-icons使用教程

    简介 vue2-social-icons是一个Vue.js组件,用于在Web应用程序中渲染常用的社交媒体图标。该组件包括了40个不同的社交媒体图标,使您可以快速轻松地将它们添加到您的应用程序中。

    3 年前
  • npm 包 fk-reactnative-shimmer 使用教程

    随着移动端应用的普及,越来越多的开发者开始关注 React Native。React Native 是 Facebook 推出的开源框架,它能够让开发者使用 JavaScript 和 React 语言...

    3 年前
  • npm 包 gatsby-bulma-default 使用教程

    在前端开发过程中,样式往往是一个大问题。为了解决这个问题,我们使用了各种 CSS 框架,其中 Bulma 是最流行的之一。在 Gatsby 中使用 Bulma,可以使开发变得更简单、更轻松。

    3 年前
  • npm 包 graphql-osm 使用教程

    GraphQL-OSM 是一个利用 GraphQL 技术实现的 OpenStreetMap 数据库查询工具。它提供了一些方便的 GraphQL 接口,可以帮助我们快速地查询 OSM 数据库中的信息。

    3 年前

相关推荐

    暂无文章