npm 包 Ember-Redux-Actions 使用教程

阅读时长 18 分钟读完

Ember-Redux-Actions 是一款非常实用的 npm 包,它为 Ember 应用程序提供了 Redux 状态管理库的支持。如果您正在开发基于 Ember 框架的 Web 应用程序,那么使用 Ember-Redux-Actions 将使您的应用程序更具可维护性和可扩展性。在本教程中,我们将介绍如何安装和使用 Ember-Redux-Actions。

安装

我们可以使用 npm 进行安装:

使用

使用 Ember-Redux-Actions,我们需要进行以下设置:

将 Redux 库集成到 Ember 应用程序中

首先,我们需要将 Redux 库集成到 Ember 应用程序中。我们可以使用 ember-redux 插件轻松完成此操作。使用以下命令安装 ember-redux 和其它必要的依赖项:

创建一个 Redux Store

我们需要创建一个 Redux Store,该 Store 将用于存储整个应用程序的所有状态。我们可以使用以下代码段创建一个简单的 Store:

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

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

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

使用 RootStateMixin

我们需要在 Ember 组件中使用 RootStateMixin,这个 Mixin 会让我们跨 Redux Store 访问整个应用程序状态。我们可以使用以下代码段将 RootStateMixin 引入到每个 Ember 组件中:

创建 Action Types

我们需要创建一个包含所有 Action Types 的常量文件。这有助于确保我们在应用程序中的所有地方都使用相同的 Action Types。我们可以使用以下代码片段定义 Action Types:

创建 Action Creators

我们需要创建一组函数来创建 Redux Actions。我们可以使用以下代码段定义 Action Creators:

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

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

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

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

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

创建 Reducers

我们需要创建一组 Reducers,负责根据 Actions 更新应用程序状态。我们可以使用以下代码段定义 Reducers:

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

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

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

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

在 Ember 组件中使用 Actions 和 Selectors

我们可以在 Ember 组件中使用 Action Creators 和 Selectors 来派发 Actions 和选择部分状态。我们可以使用以下代码段在组件中派发 Action:

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

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

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

我们可以使用以下代码片段选择部分状态:

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

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

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

示例代码

以下是使用 Ember-Redux-Actions 的简单 Todos 应用程序的代码:

index.js

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

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

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

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

store/store.js

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

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

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

actions/actionTypes.js

actions/actions.js

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

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

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

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

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

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

reducers/todos.js

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

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

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

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

reducers/index.js

selectors/selectors.js

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

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

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

components/AddTodo.js

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

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

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

components/Footer.js

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

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

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

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

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

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

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

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

components/VisibleTodoList.js

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

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

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

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

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

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

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

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

总结

在本教程中,我们学习了如何在 Ember 应用程序中使用 Ember-Redux-Actions。通过使用 Ember-Redux-Actions,我们可以在 Ember 应用程序中轻松使用 Redux 状态管理库。希望这篇教程能够帮助您理解如何使用 Ember-Redux-Actions 以及如何为您的 Ember 应用程序实现更可维护和可扩展的状态管理。

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

纠错
反馈