【Vue】如何在 Vue 3 中使用組合式 API 與 Vuex 進行狀態管理的詳細教程

如何在 Vue 3 中使用組合式 API 與 Vuex 進行狀態管理的詳細教程。

安裝 Vuex

首先,在你的 Vue 3 項目中安裝 Vuex。可以使用 npm 或 yarn:

npm install vuex@next --save
# or
yarn add vuex@next

創建 Store

在 Vue 3 中,你可以使用 createStore 函數來創建 Vuex Store。通常我們會在項目的 src 目錄下創建一個 store 文件夾,并在其中創建一個 index.js 文件:

// src/store/index.jsimport { createStore } from 'vuex';const store = createStore({state() {return {count: 0};},mutations: {increment(state) {state.count++;}},actions: {increment({ commit }) {commit('increment');}},getters: {doubleCount(state) {return state.count * 2;}}
});export default store;

在 Vue 應用中使用 Store

在你的 Vue 應用中,你需要將創建的 Store 實例傳遞給 Vue 應用。通常在 main.js 文件中進行:

// src/main.jsimport { createApp } from 'vue';
import App from './App.vue';
import store from './store';const app = createApp(App);app.use(store);app.mount('#app');

使用 State

你可以在組合式 API 中通過 useStore 函數來訪問 Vuex Store:

<template><div><p>{{ count }}</p></div>
</template><script>
import { computed } from 'vue';
import { useStore } from 'vuex';export default {setup() {const store = useStore();const count = computed(() => store.state.count);return {count};}
};
</script>

使用 Getters

同樣,你可以在組合式 API 中使用 useStore 函數來訪問 Vuex Getters:

<template><div><p>{{ doubleCount }}</p></div>
</template><script>
import { computed } from 'vue';
import { useStore } from 'vuex';export default {setup() {const store = useStore();const doubleCount = computed(() => store.getters.doubleCount);return {doubleCount};}
};
</script>

提交 Mutations

你可以在組合式 API 中通過 useStore 函數來提交 Vuex Mutations:

<template><div><p>{{ count }}</p><button @click="increment">Increment</button></div>
</template><script>
import { computed } from 'vue';
import { useStore } from 'vuex';export default {setup() {const store = useStore();const count = computed(() => store.state.count);const increment = () => {store.commit('increment');};return {count,increment};}
};
</script>

分發 Actions

你可以在組合式 API 中通過 useStore 函數來分發 Vuex Actions:

<template><div><p>{{ count }}</p><button @click="increment">Increment</button></div>
</template><script>
import { computed } from 'vue';
import { useStore } from 'vuex';export default {setup() {const store = useStore();const count = computed(() => store.state.count);const increment = () => {store.dispatch('increment');};return {count,increment};}
};
</script>

模塊化 Store

當應用變得非常復雜時,可以將 store 分割成模塊(module)。每個模塊擁有自己的 state、mutation、action 和 getter,甚至可以嵌套子模塊:

// src/store/index.jsimport { createStore } from 'vuex';const moduleA = {state() {return {count: 0};},mutations: {increment(state) {state.count++;}},actions: {increment({ commit }) {commit('increment');}},getters: {doubleCount(state) {return state.count * 2;}}
};const store = createStore({modules: {a: moduleA}
});export default store;

訪問模塊中的 State

在組合式 API 中,你可以通過模塊名來訪問模塊中的 state 和其他屬性:

<template><div><p>{{ count }}</p></div>
</template><script>
import { computed } from 'vue';
import { useStore } from 'vuex';export default {setup() {const store = useStore();const count = computed(() => store.state.a.count);return {count};}
};
</script>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64344.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64344.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64344.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

七、隊列————相關概念詳解

隊列————相關概念詳解 前言一、隊列1.1 隊列是什么?1.2 隊列的類比 二、隊列的常用操作三、隊列的實現3.1 基于數組實現隊列3.1.1 基于環形數組實現的隊列3.1.2 基于動態數組實現的隊列 3.2 基于鏈表實現隊列 四、隊列的典型應用總結 前言 本篇文章&#xff0c;我們一起來…

基于 Ragflow 搭建知識庫-初步實踐

基于 Ragflow 搭建知識庫-初步實踐 一、簡介 Ragflow 是一個強大的工具&#xff0c;可用于構建知識庫&#xff0c;實現高效的知識檢索和查詢功能。本文介紹如何利用 Ragflow 搭建知識庫&#xff0c;包括環境準備、安裝步驟、配置過程以及基本使用方法。 二、環境準備 硬件要…

Pandas03

Pandas01 Pandas02 文章目錄 內容回顧1 排序和統計函數2 缺失值處理2.1 認識缺失值2.2 缺失值處理- 刪除2.3 缺失值處理- 填充非時序數據時序數據 3 Pandas數據類型3.1 數值類型和字符串類型之間的轉換3.2 日期時間類型3.3 日期時間索引 4 分組聚合4.1 分組聚合的API使用4.2 分…

springboot整合log4j2日志框架1

一 log4j基本知識 1.1 log4j的日志級別 Log4j定義了8個級別的log&#xff08;除去OFF和ALL&#xff0c;可以說分為6個級別&#xff09;&#xff0c;優先級從低到高依次為&#xff1a;All&#xff0c;trace&#xff0c;debug&#xff0c;info&#xff0c;warn&#xff0c;err…

Spring源碼_05_IOC容器啟動細節

前面幾章&#xff0c;大致講了Spring的IOC容器的大致過程和原理&#xff0c;以及重要的容器和beanFactory的繼承關系&#xff0c;為后續這些細節挖掘提供一點理解基礎。掌握總體脈絡是必要的&#xff0c;接下來的每一章都是從總體脈絡中&#xff0c; 去研究之前沒看的一些重要…

WPF使用OpenCvSharp4

WPF使用OpenCvSharp4 創建項目安裝OpenCvSharp4 創建項目 安裝OpenCvSharp4 在解決方案資源管理器中&#xff0c;右鍵單擊項目名稱&#xff0c;選擇“管理 NuGet 包”。搜索并安裝以下包&#xff1a; OpenCvSharp4OpenCvSharp4.ExtensionsOpenCvSharp4.runtime.winSystem.Man…

leetcode 3083. 字符串及其反轉中是否存在同一子字符串 簡單

給你一個字符串 s &#xff0c;請你判斷字符串 s 是否存在一個長度為 2 的子字符串&#xff0c;在其反轉后的字符串中也出現。 如果存在這樣的子字符串&#xff0c;返回 true&#xff1b;如果不存在&#xff0c;返回 false 。 示例 1&#xff1a; 輸入&#xff1a;s "…

TCP-UDP調試工具推薦:Socket通信測試教程(附詳細圖解)

前言 在網絡編程與應用開發中&#xff0c;調試始終是一項不可忽視的重要環節。尤其是在涉及TCP/IP、UDP等底層網絡通信協議時&#xff0c;如何確保數據能夠準確無誤地在不同節點間傳輸&#xff0c;是許多開發者關注的核心問題。 調試的難點不僅在于定位連接建立、數據流控制及…

Vue.js框架:在線教育系統的安全性與穩定性

2.1系統開發使用的關鍵技術 本系統在開發中選擇B/S框架進行設計&#xff0c;語言采用Java&#xff0c;數據庫采用Mysql&#xff0c;并在設計中加入VUE.js技術&#xff0c;本系統的運行環境為Idea。 2.2 VUE.js技術介紹 VUE.js是一個用來開發前臺界面的JavaScript框架&#xff0…

【新方法】通過清華鏡像源加速 PyTorch GPU 2.5安裝及 CUDA 版本選擇指南

下面詳細介紹所提到的兩條命令&#xff0c;它們的作用及如何在你的 Python 環境中加速 PyTorch 等庫的安裝。 1. 設置清華鏡像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple這條命令的作用是將 pip &#xff08;Python 的包管理工具&#xf…

【數據結構】單鏈表的使用

單鏈表的使用 1、基本概念2、鏈表的分類3、鏈表的基本操作a、單鏈表節點設計b、單鏈表初始化c、單鏈表增刪節點**節點頭插&#xff1a;****節點尾插&#xff1a;****新節點插入指定節點后&#xff1a;**節點刪除&#xff1a; d、單鏈表修改節點e、單鏈表遍歷&#xff0c;并打印…

虛幻引擎是什么?

Unreal Engine&#xff0c;是一款由Epic Games開發的游戲引擎。該引擎主要是為了開發第一人稱射擊游戲而設計&#xff0c;但現在已經被成功地應用于開發模擬游戲、恐怖游戲、角色扮演游戲等多種不同類型的游戲。虛幻引擎除了被用于開發游戲&#xff0c;現在也用于電影的虛擬制片…

Linux(Centos 7.6)yum源配置

yum是rpm包的管理工具&#xff0c;可以自動安裝、升級、刪除軟件包的功能&#xff0c;可以自動解決軟件包之間的依賴關系&#xff0c;使得用戶更方便軟件包的管理。要使用yum必須要進行配置&#xff0c;個人將其分為三類&#xff0c;本地yum源、局域網yum源、第三方yum源&#…

Linux上更新jar包里的某個class文件

目標&#xff1a;替換voice-1.0.jar里的TrackHandler.class文件 一.查詢jar包里TrackHandler.class所在的路徑 jar -tvf voice-1.0.jar |grep TrackHandler 二.解壓出TrackHandler.class文件 jar -xvf voice-1.0.jar BOOT-INF/classes/com/yf/rj/handler/TrackHandler.cla…

機器學習中回歸預測模型中常用四個評價指標MBE、MAE、RMSE、R2解釋

在機器學習中&#xff0c;評估模型性能時常用的四個指標包括平均絕對誤差&#xff08;Mean Absolute Error, MAE&#xff09;、均方誤差&#xff08;Mean Squared Error, MSE&#xff09;、均方根誤差&#xff08;Root Mean Squared Error, RMSE&#xff09;和決定系數&#xf…

基于SpringBoot的Jwt認證以及密碼aes加密解密技術

目錄 前言 1.SpringBoot項目的創建 2.相關技術 3.項目架構 4.項目關鍵代碼 5.項目最終的運行效果 ?編輯 6.PostMan測試接口結果 前言 學習了SpringBoot之后&#xff0c;才覺得SpringBoot真的很方便&#xff0c;相比傳統的SSH&#xff0c;SSM&#xff0c;SpringBo…

uniapp下載打開實現方案,支持安卓ios和h5,下載文件到指定目錄,安卓文件管理內可查看到

uniapp下載&打開實現方案&#xff0c;支持安卓ios和h5 Android&#xff1a; 1、申請本地存儲讀寫權限 2、創建文件夾&#xff08;文件夾不存在即創建&#xff09; 3、下載文件 ios&#xff1a; 1、下載文件 2、保存到本地&#xff0c;需要打開文件點擊儲存 使用方法&…

77、將adaface的mtcnn模型npy文件轉成atlas310p模型,并進行推理

基本思想:將adaface的mtcnn模型npy文件轉成atlas310p模型進行推理。同時比對結果 ubuntu@ubuntu:~$ git clone https://github.com/mk-minchul/AdaFace.git Cloning into AdaFace... remote: Enumerating objects: 236, done. remote: Counting objects: 100% (109/109), don…

Spark SQL DML語句

【圖書介紹】《Spark SQL大數據分析快速上手》-CSDN博客 《Spark SQL大數據分析快速上手》【摘要 書評 試讀】- 京東圖書 Spark本地模式安裝_spark3.2.2本地模式安裝-CSDN博客 DML&#xff08;Data Manipulation Language&#xff0c;數據操作語言&#xff09;操作主要用來對…

農歷節日倒計時:基于Python的公歷與農歷日期轉換及節日查詢小程序

農歷節日倒計時&#xff1a;基于Python的公歷與農歷日期轉換及節日查詢小程序 摘要 又是一年春節即將到來&#xff0c;突然想基于Python編寫一個農歷節日的倒計時小程序。該程序能夠根據用戶輸入的農歷節日名稱&#xff0c;計算出距離該節日還有多少天。通過使用lunardate庫進…