如何在 React Redux 中管理表单数据?

阅读时长 10 分钟读完

在 React 中,表单数据的管理是非常重要的一环,而 Redux 则提供了一种可靠的方式来管理这些数据。本文将介绍如何在 React Redux 中管理表单数据,并提供一些实用的示例代码。

在 Redux 中管理表单数据

在 Redux 中,表单数据通常会被存储在 Redux store 中。我们可以使用一个 reducer 来管理表单数据的状态。下面是一个示例 reducer:

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

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

这个 reducer 定义了三个表单输入域的初始状态,并通过处理 INPUT_CHANGEFORM_SUBMIT 两个 action 来更新表单数据。INPUT_CHANGE action 由表单输入域改变时触发,包含了 namevalue 两个参数。FORM_SUBMIT action 则在表单提交时触发,使表单重置为初始状态。

在组件中使用这个 reducer 很简单。我们只需要使用 connect() 函数将组件连接到 Redux store,并将 reducer 中的表单数据状态传入组件。

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

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

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

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

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

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

这个表单组件定义了两个方法:handleInputChange()handleSubmit()handleInputChange() 用于处理表单输入域的改变。它发送了一个 INPUT_CHANGE action,包含了被改变的输入域的 namevaluehandleSubmit() 则在表单提交时触发。它阻止了表单默认行为并发送了 FORM_SUBMIT action。我们可以在这个方法中发送表单数据等操作。

我们还需要定义一个 mapStateToProps() 函数来将 reducer 中的表单数据状态映射到组件属性中。这个函数接受一个 state 参数,并返回一个对象。这个对象为组件的每个属性都定义了一个值,这些值是从 store 中获取的表单数据状态。最后,我们使用 connect() 函数将组件与 store 连接起来。

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

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

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

最后,我们在 index.js 中创建一个 Redux store,并使用 Provider 组件将应用程序与 store 连接起来。这个 store 包含了用于管理表单数据的 reducer。

示例代码

下面是完整的示例代码。它包括了一个完整的表单组件和一个定义表单数据状态的 reducer。

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

在 React Redux 中管理表单数据非常容易。我们只需要定义一个 reducer 并连接组件到 store 中。通过发送 INPUT_CHANGEFORM_SUBMIT 两个 action,我们可以很容易地管理和更新表单数据状态。希望本文对大家有所帮助。

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

纠错
反馈