npm 包 encaps-redux 使用教程

阅读时长 9 分钟读完

简介

encaps-redux 是一个可以方便地将 Redux 实例嵌入组件内部的库。它旨在简化组件与 Redux 的交互过程,并提供了一种可以重用复杂逻辑的方式。

安装

使用 npm 安装:

使用

基本用法

首先,需要使用 Provider 来将 Redux 实例提供给整个应用。在组件内部,可以使用 connect 函数将 Redux 状态和操作映射到组件的 props 上。

使用 encaps-redux 后,可以在组件内部使用 storedispatch,而不需要直接从它们的父组件中传递。这样可以更好地封装组件内部状态和逻辑。

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

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

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

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

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

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

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

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

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

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

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

使用选项

encapsulate 函数接受一个可选的选项对象,可以用来控制 storedispatch 是否应该被嵌入到组件中。

这将在组件中创建两个新的 props:foobar,并将 storedispatch 注入到它们中。注意,这会破坏 connect 函数原本的使用方式,因此建议仅在需要特殊逻辑时使用此选项。

使用示例

以下是一个使用 encaps-redux 的示例,它实现了一个具有多个步骤的表单,每个步骤都有自己的数据和验证逻辑。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

该示例使用了 useState 来跟踪表单数据和当前步骤。每个表单步骤都使用了一个独立的组件,每个组件都使用了 connect 函数来与 Redux 进行交互。它们在 encapsulate 函数中进行了封装,以使组件能够自行处理 storedispatch。最终,整个表单被包含在一个 Provider 组件中,以将 Redux 实例传递给整个应用程序。

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

纠错
反馈