第 2 部分:了解 Vuex:一个状态管理库。

什么是 Vuex?

在现代 Web 应用程序中,当应用程序的大小和复杂性增加时,管理状态可能会变得混乱。这就是 Vuex 的状态管理库 Vuex 的用武之地。将 Vuex 存储视为一个大容器,其中包含组件所需的所有重要信息。无需在组件之间来回传递数据,您只需将其放入商店并从应用程序的任何位置访问它。它提供了一种集中式方法来管理应用程序所有组件中使用的数据。

注意:在本系列中选择使用 Vuex 是因为我使用的是 Vue 2。如果有机会你想了解 Pinia,这是 VueJs 中新的状态管理,请查看这里

Vuex 遵循一种单向流模式,这有助于保持清晰且可预测的数据流,从而更容易理解和调试应用程序的状态变化。

在单向流模式中,数据来自一个源,在 Vuex 的例子中是“存储”。存储包含应用程序的状态,组件可以通过提交变更或调度操作来访问和修改状态。

此处的示例代码 src/store/index.js

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-name-color)">Vue</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">vue</span><span style="color:var(--syntax-string-color)">'</span>
<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-name-color)">Vuex</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">vuex</span><span style="color:var(--syntax-string-color)">'</span>

<span style="color:var(--syntax-name-color)">Vue</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">use</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-name-color)">Vuex</span><span style="color:var(--syntax-text-color)">)</span>

<span style="color:var(--syntax-declaration-color)">export</span> <span style="color:var(--syntax-declaration-color)">default</span> <span style="color:var(--syntax-declaration-color)">new</span> <span style="color:var(--syntax-name-color)">Vuex</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">Store</span><span style="color:var(--syntax-text-color)">({</span>
  <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">getters</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">mutations</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">actions</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">modules</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-text-color)">})</span>
</code></span></span>

以下是 Vuex 中关键组件和概念的细分:

1. state:状态代表应用程序的数据。它是一个单一的 JavaScript 对象,充当整个应用程序的真实来源。所有组件都可以访问状态但不能直接修改它。

2. getters:getter 是允许您从存储中派生和访问特定状态的函数。它们提供类似计算属性的接口来访问状态并对其执行计算或转换。

3. mutations: Vue中的突变帮助我们以可控的方式更新和修改数据。它们使我们的组件能够根据不同的条件或用户交互做出反应和改变。这就像对某事进行更改或调整以使其与众不同。例如,当您有一张图片并且您决定在其上绘制或绘制一些新内容以改变它的外观时。要更改 vuex 状态,您必须通过分派操作或直接从组件调用它来提交更改。

4. actions: Actions类似于mutations,但是可以处理异步操作。操作可以提交突变并执行诸如从 API 获取数据、更新状态,然后提交突变以修改状态等任务。动作是通过分派动作来调用的。

5. modules:随着应用程序的增长,管理大型集中式状态可能变得具有挑战性。Vuex 中的模块有助于将状态和相关逻辑分解为更小、可重用和可管理的块。每个模块都可以有自己的状态、getters、突变和动作。

组件 Vuex 通信

在此示例中,我们将使用 Vuex 存储作为我们的中央数据存储介质来创建一个迷你应用程序。为了这个练习,我们还将利用模块系统将商店分成更小的部分。通常模块应该在商店规模增加时发挥作用,但我会做一个简短的例子,这样你就可以看到它是如何工作的。

此示例基于处理表单输入以在用户从组件内调度操作时更新商店中的状态。更新后的数据随后呈现在组件页面上。

  • 创建状态数据、动作和突变

源代码/商店/index.js

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-name-color)">Vue</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">vue</span><span style="color:var(--syntax-string-color)">'</span>
<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-name-color)">Vuex</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">vuex</span><span style="color:var(--syntax-string-color)">'</span>

<span style="color:var(--syntax-name-color)">Vue</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">use</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-name-color)">Vuex</span><span style="color:var(--syntax-text-color)">)</span>

<span style="color:var(--syntax-declaration-color)">export</span> <span style="color:var(--syntax-declaration-color)">default</span> <span style="color:var(--syntax-declaration-color)">new</span> <span style="color:var(--syntax-name-color)">Vuex</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">Store</span><span style="color:var(--syntax-text-color)">({</span>
  <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">id</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">2</span><span style="color:var(--syntax-text-color)">,</span>
    <span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">Component vue communication</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span>
    <span style="color:var(--syntax-name-color)">stack</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">VueJs</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">getters</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">getUserName</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">){</span>
      <span style="color:var(--syntax-declaration-color)">return</span> <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">;</span>
    <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">mutations</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">SET_USERNAME</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-name-color)">payload</span><span style="color:var(--syntax-text-color)">){</span>
      <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">name</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-name-color)">payload</span>
    <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">actions</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">actionSetUsername</span><span style="color:var(--syntax-text-color)">({</span> <span style="color:var(--syntax-name-color)">commit</span> <span style="color:var(--syntax-text-color)">},</span> <span style="color:var(--syntax-name-color)">data</span><span style="color:var(--syntax-text-color)">){</span>
      <span style="color:var(--syntax-name-color)">commit</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">SET_USERNAME</span><span style="color:var(--syntax-string-color)">'</span> <span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-name-color)">data</span><span style="color:var(--syntax-text-color)">);</span>
    <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">modules</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-text-color)">})</span>
</code></span></span>
  • 在 MyComponent 中,单击“设置名称”按钮时将调度“actionSetUsername”操作

  • 您还必须映射商店中的用户名值以显示当前值

源/商店/MyComponent.vue

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">template</span><span style="color:var(--syntax-error-color)">></span>
   <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">div</span><span style="color:var(--syntax-error-color)">></span>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">h1</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">name</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/h1</span>>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">p</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">email</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/p</span>>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">p</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">myProp</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/p</span>>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">button</span> <span style="color:var(--syntax-text-color)">@</span><span style="color:var(--syntax-name-color)">click</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">sendMessage</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-name-color)">Send</span> <span style="color:var(--syntax-name-color)">Message</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/button</span>>

      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">div</span> <span style="color:var(--syntax-declaration-color)">class</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">container</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span>
         <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">form</span> <span style="color:var(--syntax-text-color)">@</span><span style="color:var(--syntax-name-color)">submit</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">prevent</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">submit</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span>
            <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">input</span> 
               <span style="color:var(--syntax-name-color)">v</span><span style="color:var(--syntax-error-color)">-</span><span style="color:var(--syntax-name-color)">model</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">trim</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">storeName</span><span style="color:var(--syntax-string-color)">"</span> 
               <span style="color:var(--syntax-name-color)">type</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">text</span><span style="color:var(--syntax-string-color)">"</span> 
               <span style="color:var(--syntax-declaration-color)">class</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">form__input btn_common</span><span style="color:var(--syntax-string-color)">"</span>
            <span style="color:var(--syntax-error-color)">></span>
            <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">button</span> <span style="color:var(--syntax-declaration-color)">class</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">container__btn btn_common</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">Set</span> <span style="color:var(--syntax-name-color)">Name</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/button</span>>
         <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/form</span>>

         <span style="color:var(--syntax-comment-color)"><!--</span> <span style="color:var(--syntax-name-color)">result</span> <span style="color:var(--syntax-declaration-color)">of</span> <span style="color:var(--syntax-name-color)">click</span> <span style="color:var(--syntax-name-color)">action</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-name-color)">store</span> <span style="color:var(--syntax-error-color)">--></span>
         <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">h2</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">username</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/h2</span>>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/div</span>>
   <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/div</span>>
<span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/template</span>>

<span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">script</span><span style="color:var(--syntax-error-color)">></span>

<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-text-color)">{</span> <span style="color:var(--syntax-name-color)">mapState</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-name-color)">mapActions</span> <span style="color:var(--syntax-text-color)">}</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">vuex</span><span style="color:var(--syntax-string-color)">'</span>

<span style="color:var(--syntax-declaration-color)">export</span> <span style="color:var(--syntax-declaration-color)">default</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">MyComponent</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span>
  <span style="color:var(--syntax-name-color)">props</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
      <span style="color:var(--syntax-name-color)">myProp</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">String</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">data</span><span style="color:var(--syntax-text-color)">()</span> <span style="color:var(--syntax-text-color)">{</span>
      <span style="color:var(--syntax-declaration-color)">return</span> <span style="color:var(--syntax-text-color)">{</span>
         <span style="color:var(--syntax-name-color)">storeName</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">''</span><span style="color:var(--syntax-text-color)">,</span>
         <span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">Makanju Emmanuel</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span>
         <span style="color:var(--syntax-name-color)">email</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">makurseme@gmail.com</span><span style="color:var(--syntax-string-color)">'</span>
      <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">methods</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
   <span style="color:var(--syntax-text-color)">...</span><span style="color:var(--syntax-name-color)">mapActions</span><span style="color:var(--syntax-text-color)">([</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">actionSetUsername</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">]),</span>
   <span style="color:var(--syntax-name-color)">sendMessage</span><span style="color:var(--syntax-text-color)">()</span> <span style="color:var(--syntax-text-color)">{</span>
      <span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">$emit</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">message-sent</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">Hello from child!</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">)</span>
   <span style="color:var(--syntax-text-color)">},</span>
   <span style="color:var(--syntax-name-color)">submit</span><span style="color:var(--syntax-text-color)">(){</span>
      <span style="color:var(--syntax-declaration-color)">if</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">storeName</span> <span style="color:var(--syntax-error-color)">!==</span> <span style="color:var(--syntax-string-color)">''</span><span style="color:var(--syntax-text-color)">){</span>
        <span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">actionSetUsername</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">storeName</span><span style="color:var(--syntax-text-color)">)</span>
      <span style="color:var(--syntax-text-color)">}</span> 
   <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">computed</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
     <span style="color:var(--syntax-text-color)">...</span><span style="color:var(--syntax-name-color)">mapState</span><span style="color:var(--syntax-text-color)">({</span>
        <span style="color:var(--syntax-name-color)">username</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-name-color)">state</span> <span style="color:var(--syntax-error-color)">=></span> <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">,</span>
     <span style="color:var(--syntax-text-color)">})</span>
  <span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/script</span>>

<span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">style</span> <span style="color:var(--syntax-name-color)">lang</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">scss</span><span style="color:var(--syntax-string-color)">"</span> <span style="color:var(--syntax-name-color)">scoped</span><span style="color:var(--syntax-error-color)">></span>
<span style="color:var(--syntax-comment-color)">/* styles g*/</span>
<span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">container</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-text-color)">width</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">40</span><span style="color:var(--syntax-error-color)">%</span><span style="color:var(--syntax-text-color)">;</span>
  <span style="color:var(--syntax-text-color)">margin</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">1</span><span style="color:var(--syntax-name-color)">rem</span> <span style="color:var(--syntax-name-color)">auto</span><span style="color:var(--syntax-text-color)">;</span> 
  <span style="color:var(--syntax-name-color)">box</span><span style="color:var(--syntax-error-color)">-</span><span style="color:var(--syntax-name-color)">shadow</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-name-color)">px</span> <span style="color:var(--syntax-literal-color)">2</span><span style="color:var(--syntax-name-color)">px</span> <span style="color:var(--syntax-literal-color)">5</span><span style="color:var(--syntax-name-color)">px</span> <span style="color:var(--syntax-name-color)">rgba</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-literal-color)">0.3</span><span style="color:var(--syntax-text-color)">);</span>
  <span style="color:var(--syntax-name-color)">border</span><span style="color:var(--syntax-error-color)">-</span><span style="color:var(--syntax-name-color)">radius</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">5</span><span style="color:var(--syntax-name-color)">px</span><span style="color:var(--syntax-text-color)">;</span>
  <span style="color:var(--syntax-text-color)">padding</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">10</span><span style="color:var(--syntax-name-color)">px</span> <span style="color:var(--syntax-literal-color)">5</span><span style="color:var(--syntax-name-color)">px</span><span style="color:var(--syntax-text-color)">;</span>  

  <span style="color:var(--syntax-error-color)">&</span> <span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">btn_common</span> <span style="color:var(--syntax-text-color)">{</span>
     <span style="color:var(--syntax-text-color)">border</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-literal-color)">75</span><span style="color:var(--syntax-name-color)">px</span> <span style="color:var(--syntax-name-color)">solid</span> #<span style="color:var(--syntax-literal-color)">7373</span><span style="color:var(--syntax-name-color)">ed</span><span style="color:var(--syntax-text-color)">;</span>
     <span style="color:var(--syntax-text-color)">padding</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">5</span><span style="color:var(--syntax-name-color)">px</span> <span style="color:var(--syntax-literal-color)">10</span><span style="color:var(--syntax-name-color)">px</span><span style="color:var(--syntax-text-color)">;</span>
     <span style="color:var(--syntax-name-color)">border</span><span style="color:var(--syntax-error-color)">-</span><span style="color:var(--syntax-name-color)">radius</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">5</span><span style="color:var(--syntax-name-color)">px</span><span style="color:var(--syntax-text-color)">;</span>
  <span style="color:var(--syntax-text-color)">}</span>

  <span style="color:var(--syntax-error-color)">&</span> <span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">form__input</span> <span style="color:var(--syntax-text-color)">{</span>
     <span style="color:var(--syntax-text-color)">outline</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-name-color)">none</span><span style="color:var(--syntax-text-color)">;</span>
     <span style="color:var(--syntax-name-color)">margin</span><span style="color:var(--syntax-error-color)">-</span><span style="color:var(--syntax-name-color)">right</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">5</span><span style="color:var(--syntax-name-color)">px</span><span style="color:var(--syntax-text-color)">;</span>
  <span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/style</span>>
</code></span></span>

最终结果的快照

如何创建一个 vuex 模块

当事情变得臃肿时,你可以创建尽可能多的模块来将存储数据分解成小的和可管理的块。例如:在学校门户中,您可以创建一个处理身份验证的用户模块,您还可以创建另一个模块来管理学生记录等。

  • 在您的商店目录中创建一个新的模块文件夹

  • 创建模块文件:在新文件夹中为您的 Vuex 模块创建一个单独的模块文件。此文件将包含特定于您的模块的状态、突变、操作和获取器。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>
<span style="color:var(--syntax-declaration-color)">const</span> <span style="color:var(--syntax-name-color)">myModule</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">{</span>
   <span style="color:var(--syntax-name-color)">namespaced</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-declaration-color)">true</span><span style="color:var(--syntax-text-color)">,</span>
   <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
     <span style="color:var(--syntax-comment-color)">// Your module-specific state</span>
     <span style="color:var(--syntax-name-color)">count</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-text-color)">,</span>
   <span style="color:var(--syntax-text-color)">},</span>
   <span style="color:var(--syntax-name-color)">mutations</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
     <span style="color:var(--syntax-comment-color)">// Your module-specific mutations</span>
     <span style="color:var(--syntax-name-color)">INCREMENT</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">){</span>
        <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">count</span>  <span style="color:var(--syntax-error-color)">+=</span> <span style="color:var(--syntax-literal-color)">1</span><span style="color:var(--syntax-text-color)">;</span>
     <span style="color:var(--syntax-text-color)">}</span>
   <span style="color:var(--syntax-text-color)">},</span>
   <span style="color:var(--syntax-name-color)">actions</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
      <span style="color:var(--syntax-comment-color)">// Your module-specific actions</span>
      <span style="color:var(--syntax-name-color)">incrementCount</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-name-color)">commit</span><span style="color:var(--syntax-text-color)">}){</span>
        <span style="color:var(--syntax-name-color)">commit</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">INCREMENT</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">);</span>
      <span style="color:var(--syntax-text-color)">},</span>
   <span style="color:var(--syntax-text-color)">},</span>
 <span style="color:var(--syntax-text-color)">};</span>

 <span style="color:var(--syntax-declaration-color)">export</span> <span style="color:var(--syntax-declaration-color)">default</span> <span style="color:var(--syntax-name-color)">myModule</span><span style="color:var(--syntax-text-color)">;</span>

</code></span></span>
  • 在商店中注册模块:将模块文件导入 Vuex 商店,并使用 modules 属性将其注册为模块。该模块将在指定的命名空间下命名空间。
<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-name-color)">Vue</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">vue</span><span style="color:var(--syntax-string-color)">'</span>
<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-name-color)">Vuex</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">vuex</span><span style="color:var(--syntax-string-color)">'</span>
<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-name-color)">myModule</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">../store/modules/myModule</span><span style="color:var(--syntax-string-color)">'</span>

<span style="color:var(--syntax-name-color)">Vue</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">use</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-name-color)">Vuex</span><span style="color:var(--syntax-text-color)">)</span>

<span style="color:var(--syntax-declaration-color)">export</span> <span style="color:var(--syntax-declaration-color)">default</span> <span style="color:var(--syntax-declaration-color)">new</span> <span style="color:var(--syntax-name-color)">Vuex</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">Store</span><span style="color:var(--syntax-text-color)">({</span>
  <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">id</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-literal-color)">2</span><span style="color:var(--syntax-text-color)">,</span>
    <span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">Component vue communication</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span>
    <span style="color:var(--syntax-name-color)">stack</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">VueJs</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">getters</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">getUserName</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">){</span>
      <span style="color:var(--syntax-declaration-color)">return</span> <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">;</span>
    <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">mutations</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">SET_USERNAME</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-name-color)">payload</span><span style="color:var(--syntax-text-color)">){</span>
      <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">name</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-name-color)">payload</span>
    <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">actions</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">actionSetUsername</span><span style="color:var(--syntax-text-color)">({</span> <span style="color:var(--syntax-name-color)">commit</span> <span style="color:var(--syntax-text-color)">},</span> <span style="color:var(--syntax-name-color)">data</span><span style="color:var(--syntax-text-color)">){</span>
      <span style="color:var(--syntax-name-color)">commit</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">SET_USERNAME</span><span style="color:var(--syntax-string-color)">'</span> <span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-name-color)">data</span><span style="color:var(--syntax-text-color)">);</span>
    <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">modules</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
    <span style="color:var(--syntax-name-color)">mod</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-name-color)">myModule</span> <span style="color:var(--syntax-comment-color)">//register your module here</span>
  <span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-text-color)">})</span>

</code></span></span>
  • 访问组件中的模块:您现在可以使用 $store 对象在 Vue 组件中访问模块的状态、突变、操作和 getter。要访问特定于模块的元素,您需要在它们前面加上模块的命名空间。

源/商店/MyComponent.vue

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">template</span><span style="color:var(--syntax-error-color)">></span>
   <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">div</span><span style="color:var(--syntax-error-color)">></span>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">h1</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">name</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/h1</span>>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">p</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">email</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/p</span>>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">p</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">myProp</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/p</span>>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">button</span> <span style="color:var(--syntax-text-color)">@</span><span style="color:var(--syntax-name-color)">click</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">sendMessage</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-name-color)">Send</span> <span style="color:var(--syntax-name-color)">Message</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/button</span>>

      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">div</span> <span style="color:var(--syntax-declaration-color)">class</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">container</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span>
         <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">form</span> <span style="color:var(--syntax-text-color)">@</span><span style="color:var(--syntax-name-color)">submit</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">prevent</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">submit</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span>
            <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">input</span> 
               <span style="color:var(--syntax-name-color)">v</span><span style="color:var(--syntax-error-color)">-</span><span style="color:var(--syntax-name-color)">model</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">trim</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">storeName</span><span style="color:var(--syntax-string-color)">"</span> 
               <span style="color:var(--syntax-name-color)">type</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">text</span><span style="color:var(--syntax-string-color)">"</span> 
               <span style="color:var(--syntax-declaration-color)">class</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">form__input btn_common</span><span style="color:var(--syntax-string-color)">"</span>
            <span style="color:var(--syntax-error-color)">></span>
            <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">button</span> <span style="color:var(--syntax-declaration-color)">class</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">container__btn btn_common</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">Set</span> <span style="color:var(--syntax-name-color)">Name</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/button</span>>
         <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/form</span>>

         <span style="color:var(--syntax-comment-color)"><!--</span> <span style="color:var(--syntax-name-color)">result</span> <span style="color:var(--syntax-declaration-color)">of</span> <span style="color:var(--syntax-name-color)">click</span> <span style="color:var(--syntax-name-color)">action</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-name-color)">store</span> <span style="color:var(--syntax-error-color)">--></span>
         <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">h2</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">username</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/h2</span>>
         <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">h2</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-name-color)">module</span> <span style="color:var(--syntax-name-color)">count</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{{</span> <span style="color:var(--syntax-name-color)">count</span> <span style="color:var(--syntax-text-color)">}}</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/h2</span>>
         <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">button</span> <span style="color:var(--syntax-name-color)">type</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">submit</span><span style="color:var(--syntax-string-color)">"</span> <span style="color:var(--syntax-text-color)">@</span><span style="color:var(--syntax-name-color)">click</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">myModuleAction</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-error-color)">></span><span style="color:var(--syntax-name-color)">increment</span> <span style="color:var(--syntax-name-color)">count</span><span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/button</span>>
      <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/div</span>>
   <span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/div</span>>
<span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/template</span>>

<span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-name-color)">script</span><span style="color:var(--syntax-error-color)">></span>

<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-text-color)">{</span> <span style="color:var(--syntax-name-color)">mapState</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-name-color)">mapActions</span> <span style="color:var(--syntax-text-color)">}</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">vuex</span><span style="color:var(--syntax-string-color)">'</span>

<span style="color:var(--syntax-declaration-color)">export</span> <span style="color:var(--syntax-declaration-color)">default</span> <span style="color:var(--syntax-text-color)">{</span>
  <span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">MyComponent</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span>
  <span style="color:var(--syntax-name-color)">props</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
      <span style="color:var(--syntax-name-color)">myProp</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">String</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">data</span><span style="color:var(--syntax-text-color)">()</span> <span style="color:var(--syntax-text-color)">{</span>
      <span style="color:var(--syntax-declaration-color)">return</span> <span style="color:var(--syntax-text-color)">{</span>
         <span style="color:var(--syntax-name-color)">storeName</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">''</span><span style="color:var(--syntax-text-color)">,</span>
         <span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">Makanju Emmanuel</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span>
         <span style="color:var(--syntax-name-color)">email</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">makurseme@gmail.com</span><span style="color:var(--syntax-string-color)">'</span>
      <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">methods</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
   <span style="color:var(--syntax-text-color)">...</span><span style="color:var(--syntax-name-color)">mapActions</span><span style="color:var(--syntax-text-color)">([</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">actionSetUsername</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">]),</span>
   <span style="color:var(--syntax-text-color)">...</span><span style="color:var(--syntax-name-color)">mapActions</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">mod</span><span style="color:var(--syntax-string-color)">'</span> <span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">incrementCount</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">]),</span>
   <span style="color:var(--syntax-name-color)">sendMessage</span><span style="color:var(--syntax-text-color)">()</span> <span style="color:var(--syntax-text-color)">{</span>
      <span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">$emit</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">message-sent</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">Hello from child!</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">)</span>
   <span style="color:var(--syntax-text-color)">},</span>
   <span style="color:var(--syntax-name-color)">submit</span><span style="color:var(--syntax-text-color)">(){</span>
      <span style="color:var(--syntax-declaration-color)">if</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">storeName</span> <span style="color:var(--syntax-error-color)">!==</span> <span style="color:var(--syntax-string-color)">''</span><span style="color:var(--syntax-text-color)">){</span>
        <span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">actionSetUsername</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">storeName</span><span style="color:var(--syntax-text-color)">)</span>
      <span style="color:var(--syntax-text-color)">}</span> 
   <span style="color:var(--syntax-text-color)">},</span>
   <span style="color:var(--syntax-name-color)">myModuleAction</span><span style="color:var(--syntax-text-color)">()</span> <span style="color:var(--syntax-text-color)">{</span>
      <span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">incrementCount</span><span style="color:var(--syntax-text-color)">();</span> <span style="color:var(--syntax-comment-color)">// Dispatch module action</span>
   <span style="color:var(--syntax-text-color)">}</span>

  <span style="color:var(--syntax-text-color)">},</span>
  <span style="color:var(--syntax-name-color)">computed</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">{</span>
     <span style="color:var(--syntax-text-color)">...</span><span style="color:var(--syntax-name-color)">mapState</span><span style="color:var(--syntax-text-color)">({</span>
        <span style="color:var(--syntax-name-color)">username</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-name-color)">state</span> <span style="color:var(--syntax-error-color)">=></span> <span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">name</span><span style="color:var(--syntax-text-color)">,</span>
     <span style="color:var(--syntax-text-color)">}),</span>
     <span style="color:var(--syntax-name-color)">count</span><span style="color:var(--syntax-text-color)">()</span> <span style="color:var(--syntax-text-color)">{</span>
        <span style="color:var(--syntax-declaration-color)">return</span> <span style="color:var(--syntax-declaration-color)">this</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">$store</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">state</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">mod</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-name-color)">count</span><span style="color:var(--syntax-text-color)">;</span> <span style="color:var(--syntax-comment-color)">// Access module state</span>
     <span style="color:var(--syntax-text-color)">}</span>
  <span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-error-color)"><</span><span style="color:var(--syntax-string-color)">/script</span>>

</code></span></span>

总之,在 Vue.js 应用程序中使用 Vuex 模块提供了一种结构化且可扩展的状态管理方法。模块允许您将商店划分为更小的独立单元,从而更容易组织和维护应用程序的状态管理。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值