詳解在Vue中如何模塊化使用Vuex
正常使用
// src/store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
count: 0, // 一個(gè)簡(jiǎn)單的狀態(tài)示例
},
mutations: {
increment(state) {
state.count++;
},
decrement(state) {
state.count--;
},
},
actions: {
increment(context) {
context.commit('increment');
},
decrement(context) {
context.commit('decrement');
},
},
getters: {
getCount: state => state.count,
},
});在組件中使用 Vuex: 在需要訪(fǎng)問(wèn)或修改狀態(tài)的組件中,你可以使用Vuex提供的輔助函數(shù)。
// src/components/Counter.vue
<template>
<div>
<p>Count: {{ count }}</p>
<button @click="increment">Increment</button>
<button @click="decrement">Decrement</button>
</div>
</template>
<script>
import { mapState, mapActions } from 'vuex';
export default {
computed: {
...mapState(['count']),
},
methods: {
...mapActions(['increment', 'decrement']),
},
};
</script>模塊化使用
優(yōu)點(diǎn)
在個(gè)人小項(xiàng)目當(dāng)中,不使用模塊化沒(méi)什么問(wèn)題,但是在公司或者大型項(xiàng)目下就需要使用模塊化管理,使用模塊化有利于可維護(hù)性、團(tuán)隊(duì)協(xié)作、代碼結(jié)構(gòu)清晰、提高可讀性等優(yōu)點(diǎn)。
假設(shè)你有兩個(gè)模塊,一個(gè)用于管理用戶(hù)信息,另一個(gè)用于管理商品信息。
首先,分別創(chuàng)建兩個(gè) Vuex 模塊文件:
模塊文件
userModule.js
// userModule.js
const state = {
user: null,
userName:"張三"
};
const mutations = {
SET_USER(state, user) {
state.user = user;
},
};
const actions = {
setUser({ commit }, user) {
commit("SET_USER", user);
},
};
export default {
namespaced: true,
state,
mutations,
actions,
};productModule.js
// productModule.js
const state = {
products: [],
productName:'電腦'
};
const mutations = {
ADD_PRODUCT(state, product) {
state.products.push(product);
},
};
const actions = {
addProduct({ commit }, product) {
commit("ADD_PRODUCT", product);
},
};
export default {
namespaced: true,
state,
mutations,
actions,
};集中模塊的狀態(tài)到 Getters,方便頁(yè)面中使用
在根級(jí) Vuex Store 中創(chuàng)建 Getters,用于集中所有模塊的狀態(tài)數(shù)據(jù):
getters.js
// getters.js
export default {
userName: state => state.user.userName,
productName: state => state.product.productName,
};創(chuàng)建根級(jí)的 Vuex Store 文件,將上述的模塊引入并注冊(cè):
store.js
import Vue from 'vue';
import Vuex from 'vuex';
import userModule from './userModule';
import productModule from './productModule';
import getters from './getters'; // 導(dǎo)入 getters 為對(duì)象
Vue.use(Vuex);
const store = new Vuex.Store({
modules: {
user: userModule,
product: productModule,
},
getters,
});
export default store;頁(yè)面使用
<template>
<div>
<h1>User Name: {{ userName }}</h1>
</div>
</template>
<script>
export default {
computed: {
userName() {
return this.$store.getters.userName;
}
},
mounted() {
this.$store.dispatch("user/setUser", { userName: "John Doe" });
this.$store.dispatch("product/addProduct", { name: "Product A" });
},
};
</script>到此這篇關(guān)于詳解在Vue中如何模塊化使用Vuex的文章就介紹到這了,更多相關(guān)Vue模塊化使用Vuex內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3+el-select實(shí)現(xiàn)觸底加載更多功能(ts版)
這篇文章主要給大家介紹了基于vue3和el-select實(shí)現(xiàn)觸底加載更多功能,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以借鑒參考下2023-07-07
Vue CLI4 Vue.config.js標(biāo)準(zhǔn)配置(最全注釋)
這篇文章主要介紹了Vue CLI4 Vue.config.js標(biāo)準(zhǔn)配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
vue實(shí)現(xiàn)excel文件的導(dǎo)入和讀取完整步驟
Vue的數(shù)據(jù)綁定功能非常強(qiáng)大,很適合用來(lái)讀取Excel內(nèi)容,這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)excel文件的導(dǎo)入和讀取的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
vue: WebStorm設(shè)置快速編譯運(yùn)行的方法
今天小編就為大家分享一篇vue: WebStorm設(shè)置快速編譯運(yùn)行的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
web面試MVC與MVVM區(qū)別及Vue為什么不完全遵守MVVM解答
這篇文章主要介紹了web面試中常問(wèn)問(wèn)題,MVC與MVVM區(qū)別以及Vue為什么不完全遵守MVVM的難點(diǎn)解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
vue實(shí)現(xiàn)頁(yè)面滾動(dòng)到底部刷新
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)頁(yè)面滾動(dòng)到底部刷新,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
vue 項(xiàng)目打包通過(guò)命令修改 vue-router 模式 修改 API 接口前綴
這篇文章主要介紹了vue 項(xiàng)目打包通過(guò)命令修改 vue-router 模式 修改 API 接口前綴的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-06-06

