npm 包 redux-cursor 使用教程

阅读时长 9 分钟读完

前言

在前端开发中,数据是一个非常重要的概念。在 React 应用中,管理组件状态的常用工具是 Redux。但是,使用 Redux 又需要编写大量的 reducer,拆分 state 以及使用 connect 连接组件等等,这给开发带来了不小的负担。随着技术的不断进步,新的数据管理工具不断出现。Redux Cursor 是一款基于 Redux 的轻量级数据管理工具,本文将介绍其使用方法和如何在项目中使用它。

Redux Cursor 简介

Redux Cursor 是一款基于 Redux 的数据管理工具,它提供了一种新的组织代码的方式,能够增加代码的可读性和可维护性。使用 Redux Cursor,我们可以更加直观地操作数据,而且不需要编写大量的 reducer 和 action。

安装

使用 npm 安装:

使用方法

初始化

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

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

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

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

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

创建 Cursor

Redux Cursor 中的 Cursor 是一个提供了读写数据操作的对象。使用 initCursor 后,我们可以通过 cursor(path) 方法创建一个 Cursor。

创建 Cursor 后,我们就可以通过读写操作来修改数据了。

读取数据

读取数据的方法有两种:get()deref()

get()

get() 方法用来同步地获取数据。它会立即返回数据的值,如果数据还没有准备好,则会返回 undefined。

deref()

deref() 方法用来异步地获取数据。它会返回一个 Promise,当数据准备好时再返回它的值。

修改数据

修改数据也有两种方法:update()transact()

update()

update() 方法用来同步地修改数据。它可以接受一个函数或一个值。

transact()

transact() 方法用来异步地修改数据。它接受一个函数作为参数,该函数接受一个参数 mutator,用来修改数据。

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

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

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

状态更新事件

当数据发生变化后,Redux Cursor 会触发一个 cursor:change 事件。

实例

下面我们将使用 Redux Cursor 来实现一个 ToDoList 应用。

应用状态

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

初始化

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

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

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

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

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

渲染

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

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

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

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

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

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

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

总结

本文介绍了 Redux Cursor 的基本使用方法,并使用一个简单的示例来展示了它的基本使用。Redux Cursor 为我们提供了一种更加直观的数据操作方式,减少了 reducer 和 action 的编写,提高了代码的可读性和可维护性。使用 Redux Cursor,我们可以更加高效地开发出优秀的 React 应用。

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

纠错
反馈