npm 包 react-mobx-form 使用教程

前言

在 React 应用开发中,有很多场景需要处理表单数据。而管理表单数据包括表单显示、表单验证、表单提交等任务,又会让我们面临很多的挑战。为了解决这些问题,一些成熟的方案随着时间的推移也被提出,其中一个比较优秀的解决方案就是利用 Mobx 做表单数据管理。而 react-mobx-form 就是基于此方案的,旨在为开发者提供表单逻辑的流程化规范,让表单的开发更加便捷。

本文将会对于 react-mobx-form 的使用做详细的介绍,让读者能够掌握其应用的关键。

安装

首先我们要做的是安装这个包。打开你的终端,并进入你的 React 工程中,然后在终端中输入下面的命令:

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

一般情况下,安装完成后,你就可以在你的项目中使用了。

使用

初始化

在使用 react-mobx-form 之前,我们需要首先将表单数据声明成一个 Javascript 对象。我们称此代码中的对象为 Form 对象。

为了方便展示,我们先定义一个 Form 对象。

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

对于每一个 input,都包含以下属性:

  • value 表示 input 的值
  • label 表示 input 的标签名称
  • rules 表示这个 input 的验证规则。可以使用 Laravel 的 Validation 规则,或者以 pipe | 连接的字符串

组件渲染

我们来创建一个 react-mobx-form,组件非常简单:

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

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

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

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

首先,我们用 import 引入 createForm 和 observer:

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

接着,我们定义 LoginForm 组件。记得要用 observer 包裹,以便观察 state 变化并在需要的时候更新视图。

LoginForm 组件接收一个 props: form。然后我们用 form.$('fieldName') 来绑定每一个 input 属性。它包含以下三个属性:

  • label 表示 input 的标签名称
  • bind 表示绑定 input 属性,例如 onChange 和 value
  • error.message 当 input 不合法的时候,显示的错误信息。

最后,我们用 createForm() 高阶组件将 Form 对象化。此时,LoginForm 可以访问到 Form 对象的相关属性。

表单验证

一般情况下,我们需要仅在用户提交表单时验证。为了实现这一点,我们可以在提交表单时触发表单的验证。我们只需要将相应的方法关联在表单的 onSubmit 事件上即可。

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

准确来说,这里的 this 不会指向到当前组件,因为我们只是从上面的 props 中引用了 form。所以我们需要在 onSubmit 方法中签名添加箭头函数,以保证正确的 this 指向。

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

我们可以在 onSuccess 回调中访问表单的值。如果需要在 onSuccess 回调函数中调用父组件的方法,可以使用下面的代码来实现:

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

错误信息可以在 form.errors() 中得到。

代码演示

完整示例代码:

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

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

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

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

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

总结

至此,我们已经学习了 react-mobx-form 的基本用法。我们可以使用它来简化表单数据处理,同时提供一致的验证规范。相较于传统的表单处理方式,react-mobx-form 的优势是明显的,它可以使表单处理更加简单、快捷和规范。希望读者可以通过本文的介绍,更好地了解和使用 react-mobx-form。

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


猜你喜欢

  • npm 包 @jigsaw/vantage 使用教程

    在前端开发中,经常需要使用一些工具或者组件来辅助开发。npm 是一个非常流行的 JavaScript 包管理器,为 JavaScript 开发者提供了方便快捷的包管理服务。

    3 年前
  • npm 包 @jigsaw/vorpal 使用教程

    概述 npm 是一个广泛使用的 Node.js 包管理工具,我们可以通过 npm 安装各种功能强大的 Node.js 包,以实现快速开发和部署。@jigsaw/vorpal 是一个基于 Node.js...

    3 年前
  • npm 包 @justinc/prompt-del 使用教程

    在前端开发中,删除操作是非常常见的,特别是在处理表单数据时。但是,如果没有良好的用户提示机制,可能就会出现误删等问题。这时,出现了一款 npm 包 @justinc/prompt-del 就可以很好地...

    3 年前
  • npm 包 @james.talmage/npm-safe-name 使用教程

    当我们开始开发一个新的 npm 包时,我们需要给这个包起一个名字。但是有时候我们可能会发现,这个名字已经被别的开发者使用了。这时,我们需要考虑如何给这个包起一个独特而安全的名字。

    3 年前
  • npm 包 @jamesbliss/react-scrollable-anchor 使用教程

    在前端开发中,页面的滚动是一个非常常见的场景。而使用 @jamesbliss/react-scrollable-anchor 这个 npm 包,可以更加便捷地实现页面滚动功能。

    3 年前
  • npm 包 @jamesdanylik/gatsby-source-goodreads 使用教程

    如果你是一个喜欢读书的前端工程师,那么 @jamesdanylik/gatsby-source-goodreads 这个 npm 包可能会给你带来很大的帮助。本篇文章将详细讲解如何使用这个包来获取你在...

    3 年前
  • npm 包 @jordanebachelet/xml-split 使用教程

    前言 作为前端开发者,其实经常需要处理一些 XML 文件,比如从服务端拿到的数据,我们需要对其进行解析和处理,进而展示到页面上。但是,XML 文件过于臃肿且结构繁多,一般使用 JS 自带的 DOM 解...

    3 年前
  • npm 包 @jordanpapaleo/ui-library 使用教程

    随着前端开发的不断发展,现在很多项目都需要使用到 UI 库来完成开发。在这方面,npm 包 @jordanpapaleo/ui-library 是一个非常优秀的选择。

    3 年前
  • npm 包 draft.min.js 使用教程

    前言 在前端开发中,我们需要经常使用富文本编辑器来实现一些文本编辑和排版的功能。而 Draft.js 是由 Facebook 开发的一个强大的富文本编辑器框架,拥有很多的插件,可以满足大部分文本编辑需...

    3 年前
  • npm 包 @jimjkelly/cloudfront-invalidate 使用教程

    前言 在以往开发过程中,我们经常需要更新我们的 CDN 内容,以便确保最新的代码被访问者使用。为了实现 CDN 刷新,我们可以使用 AWS CloudFront 服务。

    3 年前
  • npm 包 dial.min.js 使用教程

    简介 dial.min.js 是一个能够生成带刻度和数字的钟表形式的刻度盘的 npm 包。它非常适合用于网页中的计时器和计数器等应用。本文将介绍 dial.min.js 的使用方法及示例代码。

    3 年前
  • npm 包 dialog.min.js 使用教程

    在前端开发中,对话框是常见的 UI 组件。而 npm 包 dialog.min.js 是一个轻量级的对话框插件,可以方便地创建各种对话框和提示框。本文将详细介绍如何使用该插件来创建对话框。

    3 年前
  • npm 包 @jamestalmage/empower-assert 使用教程

    概述 在前端开发中,单元测试是一个重要的环节。而其中一个关键的组成部分就是断言库,也就是用来判断测试结果是否符合预期的工具。 在 npm 中,@jamestalmage/empower-assert ...

    3 年前
  • npm 包 @jamestalmage/empower-core 使用教程

    在前端开发中,我们经常使用 npm 包来实现各种复杂的功能,提高开发效率和代码质量。其中,@jamestalmage/empower-core 是一个十分实用的 npm 包,它可以帮助我们更加方便和高...

    3 年前
  • npm 包 @juztcode/sqlite-admin 使用教程

    介绍 npm包 @juztcode/sqlite-admin 是一款用于管理sqlite数据库的工具。它可以通过命令行或图形界面的形式,提供了一些强大的功能,如数据导入/导出、表结构修改、查询等。

    3 年前
  • npm 包 @jamieconnolly/eslint-config 的使用教程

    随着前端技术的不断发展,我们需要借助各种工具提高我们的代码的质量和可维护性。其中一个非常重要的工具就是代码规范检查工具 eslint。而 eslint 的配置也是一个非常重要的问题。

    3 年前
  • npm 包 @jamiedixon/react-autosuggest 使用教程

    前端开发中,自动补全组件是经常使用到的一个功能。其中 @jamiedixon/react-autosuggest 是一款轻量级的 React 自动补全组件。本文将介绍如何使用该 npm 包,涵盖安装、...

    3 年前
  • npm 包 @jamiemcl001/object-pool 使用教程

    简介 JavaScript 中的对象池是一种缓存对象的设计模式。Object Pool 模式是对象池的一个具体实现,它用于管理可重用对象的集合。当需要对象时,可以从对象池中取出对象并使用它。

    3 年前
  • npm 包 @jamieparkinson/redux-form-material-ui 使用教程

    简介 @jamieparkinson/redux-form-material-ui 是一个用于 React 和 Redux 应用的 npm 包,其中包含了易于使用的 Material UI 表单控件和...

    3 年前
  • npm 包 @janrywang/react-contextmenu 使用教程

    简介 @janrywang/react-contextmenu 是一款 React 上下文菜单组件库,通过该组件库可以快速在你的 React 应用中添加强大的上下文菜单功能。

    3 年前

相关推荐

    暂无文章