您好,登錄后才能下訂單哦!
前言
眾所周知,vuex 是一個專為 vue.js 應用程序開發的狀態管理模式,在構建一個中大型單頁應用中使用vuex可以幫助我們更好地在組件外部管理狀態。而vue-cli是vue的官方腳手架,它能幫助我們方便的配置webpack。這樣看來,有很大的可能我們需要同時使用vue-cli與vuex
如何在vue-cli中使用vuex
項目搭建及添加vuex
當我們使用vue-cli搭建一個vue項目的時候(假設項目名為learn-vuex),搭建完成后的文件目錄是這樣子的
首先使用npm install --save-dev vuex
把vuex添加到依賴,接下來就是如何在組件中使用vuex,大體上來說有以下兩種形式。
通過 store 選項
如果vue-cli搭建成功,在src目錄下會有一個main.js文件,main.js的主要作用是把項目中最頂層的app.vue組件掛載到DOM中,其他所有的組件都可以看做是app.vue的子組件。
在main.js中,做如下操作
import Vue from 'vue' import App from './App' import router from './router' import Vuex from 'vuex'; Vue.config.productionTip = false //注意下面的代碼 Vue.use(Vuex); const store = new Vuex.Store({ state: {}, getters: {}, actions: {}, mutations: {} }); //注意router選項,此處的寫法等同于store: store new Vue({ el: '#app', router, store, components: { App }, template: '<App/>' })
在組件中,就可以通過this.$store
來使用store實例
如果在項目中需要配置的vuex選項很多,我們則應該把vuex的相關代碼分割到不同模塊
在src下新建store文件夾,在文件夾中創建如下幾個文件
我們可以隨意設置文件名,但最好可以通過文件名就能判斷出這個文件是用來干嘛的
在index.js中,我們需要
import Vue from 'vue'; import Vuex from 'vuex'; import state from './rootState.js'; import getters from './getters.js'; import mutations from './mutations.js'; import actions from './actions.js'; Vue.use(Vuex); const store = new Vuex.Store({ state, getters, actions, mutations }); export default store;
剩下的四個文件配置都差不多一樣,以rootState.js為例
const state = { count: 0, arr: [0,1,2,3,4,5] } export default state;
如此這般,在main.js中,我們需要編寫的代碼就減少了很多
import Vue from 'vue' import App from './App' import router from './router' import store from './store/index'; Vue.config.productionTip = false new Vue({ el: '#app', router, store, components: { App }, template: '<App/>' })
將vuex實例掛載到vue原型鏈上
這是一種非主流的方式,主要是受axios啟發,這里有一篇博客講解如何在vue組件中使用axios,將axios掛載到vue原型鏈上是因為不能通過vue.use來使用axios
在這種方法中,我們需要
// The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import App from './App' import router from './router' import store from './store/index'; Vue.config.productionTip = false //在vue中使用vuex必須先調用vue.use方法 Vue.use(Vuex); //具體掛載到vue原型的哪個屬性上,可以由我們自行決定 //遇到配置繁多的情況也可以進行分割 Vue.prototype.$store = new Vuex.Store({ state: {}, getters: {}, actions: {}, mutations: {} }); //沒有了store選項 new Vue({ el: '#app', router, components: { App }, template: '<App/>' })
如此這般,還是可以通過this.$store
來使用vuex
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。