NPM包Redux-Form-Lite使用教程

阅读时长 9 分钟读完

Redux-Form-Lite 是一个轻量级的 React 表单组件,能够帮助前端开发者轻松构建复杂表单并管理表单状态。本教程将介绍如何使用 npm 包 Redux-Form-Lite 编写表单,并通过深入分析其内部实现,帮助读者理解 React 表单管理的工作原理。

安装 Redux-Form-Lite

在项目目录中通过 NPM 安装 Redux-Form-Lite

使用 Redux-Form-Lite

Redux-Form-Lite 的核心是将表单组件的状态存储到 Redux 的 Store 中,并将其实现为一个 Redux 的 Reducer。表单组件中所有的输入状态和表单状态都将被存储到 Redux 的 State 中。以下是一个简单的登录表单组件的示例代码:

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

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

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

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

在这个示例中,LoginForm 组件将表单的状态存储在名为 'login' 的 Redux-Form-Lite 的表单 State 内,您可以随时在应用程序中访问表单状态。

Redux-Form-Lite 的 props 如下:

  • reduxForm - 一个高阶函数,接收一个配置对象作为参数,用于将表单与 Redux Store 连接。
  • Field - 表单输入组件,由 reduxForm 注入的 props 支持。

以下是 Login 组件中的 ``Field` '组件的名称和意义:

  • name - 输入字段的名称。
  • component - 渲染表单输入组件的 React 组件。
  • placeholder - 输入框的占位符。
  • type - 输入框的输入类型。

另外注意的是,connect() 中的 LoginForm 组件是必须声明的,即便它为空,被 reduxForm() 包裹的组件必须要被传递给 connect()

如何通过 Redux-Form-Lite 实现表单验证

由于 Redux-Form-Lite 将表单的状态存储在 Redux Store 中,因此可以通过 React + Redux 的提交状态(Redux Action),统一处理表单组件的验证和异常处理。以下是一个实现表单验证的示例代码:

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

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

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

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

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

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

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

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

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

需要注意的是 form 参数设置的值必须与最终在元素中设置的名字相同。validate 函数的输入值是每个表单输入组件中输入的值组成的对象,返回任何可能的验证错误提示,可以用以下方式设置:

  • 如果验证通过,直接返回空的 errors
  • 如果输入值错误,返回字符串类型的 errors,例如: errors.email = 'Email is required'

validate 函数在每次输入值都会被调用,每当使用者开始键入电话号码时都能及时给出错误提示信息。

如何通过 Redux-Form-Lite 实现表单数据提交

谈到表单时,最常见需求就是将表单数据上送到服务端进行处理。在 Redux 中,我们需要将数据(即 action)分发到所依赖的 reducer 中,通过 Action 提交表单数据到远程 API,以下是示例代码:

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

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

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

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

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

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

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

handleSubmit 方法将会处理简单的表单内容于 action 完成形成一个新的 dispatch。通过修改 loginAction,您可以轻松将表单数据提交到远程 API。

总结

使用 Redux-Form-Lite 可以帮助开发者在 React 应用中高效地编写复杂表单,并管理表单状态。在本文中,我们通过一个简单的登录表单示例,介绍了 Redux-Form-Lite 的使用方法、如何加入表单验证和服务端数据提交等技术内容。希望能够帮助读者更好地理解 React 表单管理状态的内部工作原理。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006700ee361a36e0bce8d05

纠错
反馈