npm包@kwhitley/use-store使用教程

阅读时长 4 分钟读完

简介

@kwhitley/use-store是一款基于React Hooks的npm包,用于全局状态管理。

安装

使用npm安装:

使用方法

创建Store

首先我们需要使用createStore函数来创建一个全局store。可以在index.js或者app.js中调用createStore方法:

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

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

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

使用Store

接下来,我们可以在任何组件中使用store中的state和dispatch。

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

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

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

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

在上面的代码中,我们使用useStore从全局store中获取了state和dispatch,然后在点击按钮时使用dispatch来修改state。

API文档

createStore(initialState)

  • initialState (Object): 初始状态

创建store,并返回store对象:

useStore(store)

  • store (Object): createStore函数返回的store对象

从全局store中获取state和dispatch,返回一个数组:

示例代码

计时器

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

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

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

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

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

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

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

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

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

在这个示例中,我们可以看到如何创建一个带有initialState的全局store,并如何从中获取state和dispatch,使用dispatch来更新state,最后在组件中使用state来显示计数器的值。

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

纠错
反馈