npm 包 @dmartss/next-hoc 使用教程

在前端开发中,我们经常需要对组件进行一些公共逻辑的抽象。比如输入框需要实时校验,菜单需要权限控制等等。这时候我们就可以使用高阶组件(Higher-Order Component,简称HOC)来实现这些公共逻辑的复用。而 @dmartss/next-hoc 就是一个专门为 Next.js 开发的高阶组件库,本篇文章将为大家介绍 @dmartss/next-hoc 的具体使用方法。

安装

使用 npm 进行安装:

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

集成

@dmartss/next-hoc 的使用非常简单。首先在 pages 目录下新建一个 _app.js 文件,然后使用 withInit 和 withRedux 进行包装:

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

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

------ ------- --------------------------
  • withInit: 初始化页面请求,常用于获取全局数据。
  • withRedux: 将页面注入到 Redux,使得页面可以使用全局状态。

这样就完成了对 _app.js 文件的 HOC 包装。接下来我们可以根据实际需求添加其他的 HOC。

示例

下面我们以一个 todo list 的例子来演示如何使用 @dmartss/next-hoc 进行开发。我们首先需要创建一个 Redux store,并添加增删改查的 action:

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

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

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

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

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

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

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

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

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

然后我们在 pages 目录下新建一个 todos.js 文件,在这个文件中我们使用 withRedux 和 withAuth 来对页面进行包装:

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

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

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

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

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

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

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

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

这里我们通过 useSelector 从 Redux 中获取 todos 数组,然后通过 useDispatch 创建 dispatch 函数,用来派发 action。同时我们在表单中绑定了 value 和 onChange 事件用来控制新建 todo 的输入。

最后我们使用 withAuth 来实现 auth 权限的校验,确保只有登录用户才能访问 todo list 页面。

总结

通过本文的介绍,我们学习了如何使用 @dmartss/next-hoc 来对 Next.js 应用进行开发。通过配合 Redux 来进行状态管理,使得页面的数据交互更加高效和统一。同时我们还学习了如何使用高阶组件对通用逻辑进行抽象,增强代码的复用性。希望本文能够对大家有所帮助。

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


猜你喜欢

  • npm 包 nodejs-wxpay 使用教程

    nodejs-wxpay 是一个 npm 包,提供了一个方便的接口用于实现微信支付功能的开发。本文将详细介绍其使用方法,包括安装、配置和示例代码。 安装 使用 npm 安装 nodejs-wxpay:...

    3 年前
  • npm 包 toggle-checkbox-radio 使用教程

    简介 toggle-checkbox-radio 是一个基于 jQuery 的 npm 包,提供了一种简单易用的方式来切换复选框和单选框的样式。在使用该包的时候,不需要手动添加 CSS 样式,也不需要...

    3 年前
  • npm 包 z3em 使用教程

    什么是 z3em? z3em 是一个基于 React 的 UI 组件库,为前端开发者提供了日常开发中常用的界面组件,如按钮、表单、对话框等。它支持定制化样式,可根据项目需求进行主题风格的切换。

    3 年前
  • npm包dwv-jqmobile-trtek使用教程

    简介 npm是node package manager的缩写,是JavaScript软件包的默认管理器。dwv-jqmobile-trtek 是一个基于DWV(DICOM Web Viewer)上的扩...

    3 年前
  • npm包react-click-out使用教程

    前端开发中,我们经常需要处理多种用户行为,例如点击和拖拽等。React框架中提供了一些内置事件处理器,但是某些情况下,我们希望对非React元素(例如按钮或弹窗)的点击事件进行处理。

    3 年前
  • npm 包 @bsalex/react-typeahead-component 使用教程

    前言 在 Web 前端开发中,交互性是一个非常重要的要素。在许多应用程序中,我们需要使用搜索框和自动填充功能来更好地帮助用户。React 作为一种流行的前端框架,提供了许多组件和工具来方便我们进行开发...

    3 年前
  • npm 包 @ghalex/tus-node-server 使用教程

    @ghalex/tus-node-server 是一款基于 tus 协议的 Node.js 服务器,用于处理大文件传输。它具有可扩展性、可定制化等特点,被广泛应用于大文件上传、断点续传等场景。

    3 年前
  • 前端开发:使用 @gerhobbelt/grunt-banner npm 包的指南

    在前端开发中,Grunt 是一个广泛使用的构建工具,它提供了一种简便的方式来管理和自动化开发流程。其中一个 Grunt 插件是 @gerhobbelt/grunt-banner,它提供了一种方便的方式...

    3 年前
  • npm 包 deep-thought.js 使用教程

    前言 在前端开发过程中,我们常常需要使用各种第三方库或插件来实现自己的需求。而 npm 是一个很好的包管理工具,可以方便地添加、更新和删除我们的依赖包。 今天,我要介绍的是一个很实用的 npm 包 d...

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

    介绍 intellij-license-cli 是一个基于 Node.js 的命令行工具,可用于生成 IntelliJ IDEA 的安装许可证。这个工具可以轻松地帮助我们在不需要手动向 JetBrai...

    3 年前
  • npm 包 mmosru-palindrome 使用教程

    前言 本文将介绍如何使用 mmosru-palindrome 包,这是一个可以检查字符串是否回文的 npm 包。该包通过简洁明了的 API,提供了一种轻松的方法来检验字符串是否为回文。

    3 年前
  • npm 包 ngx-circle-progress 使用教程

    什么是 ngx-circle-progress ngx-circle-progress 是一个用于构建圆形进度条的 Angular 组件。它内置了多个自定义选项,可以自定义进度条的颜色、厚度、绘制线条...

    3 年前
  • npm 包 react-rocket-mask 使用教程

    在前端开发中,我们常常需要使用表单控件进行输入和提交数据。而表单控件的输入格式或者展示方式可能与需求不符合,此时我们就需要使用mask来约束或调整输入方式。今天要介绍的是一个非常实用的mask组件——...

    3 年前
  • npm 包 rocket-mask 使用教程

    在前端开发中,有些时候需要对数据进行脱敏处理,比如在显示电话号码、邮件地址等信息时,为保护用户隐私,我们需要将一些关键信息部分用 * 替换掉。这时候就需要使用一个强大的 npm 包 rocket-ma...

    3 年前
  • npm 包 rsemi_js_footer 使用教程

    什么是 rsemi_js_footer? rsemi_js_footer 是一个用于在网页底部添加随机签名的轻量级 JavaScript 库,可以帮助前端开发者快速添加个性化、有趣的网页底部签名文案。

    3 年前
  • npm 包 vue-slug-input 使用教程

    前言 在前端开发过程中,经常会遇到需要生成 URL Slug 的情况。URL Slug 即指 URL 中的底线分隔符,用于表示文章标题等内容。但是对中文字符需要进行转换,这就是一个繁琐的问题。

    3 年前
  • npm 包 babel-plugin-undecorate 使用教程

    简介 在使用 JavaScript 进行开发的过程中,我们经常会使用 ES6 提供的 class 和装饰器语法来简化代码,增加可读性,但是由于浏览器对于 ES6 的支持程度不尽相同,而且装饰器语法本身...

    3 年前
  • npm 包 generations 使用教程

    什么是 generations generations 是一个用于生成随机数据的 npm 包。它提供了很多种类型的数据,包括姓名、电话号码、日期、邮件地址、地址等等,可以用于前端开发中的自动化测试、模...

    3 年前
  • npm 包 react-sort-search-table 使用教程

    React-sort-search-table 是一个简单易用的 React 表格组件,可以方便地进行排序和搜索操作,提高前端开发效率和美观度。本文将会详细介绍如何使用 react-sort-sear...

    3 年前
  • npm 包 sleek-log 使用教程

    前言 在前端开发中,经常需要输出一些调试信息或者日志信息,而 console.log 不能满足我们的需求,因为输出的信息不够明确、可读性不够好。而且在正式环境下要及时清除一些无用的日志信息,否则会带来...

    3 年前

相关推荐

    暂无文章