中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解如何在vue-cli中使用vuex

發布時間:2020-08-26 23:23:08 來源:腳本之家 閱讀:234 作者:wopelo 欄目:web開發

前言

眾所周知,vuex 是一個專為 vue.js 應用程序開發的狀態管理模式,在構建一個中大型單頁應用中使用vuex可以幫助我們更好地在組件外部管理狀態。而vue-cli是vue的官方腳手架,它能幫助我們方便的配置webpack。這樣看來,有很大的可能我們需要同時使用vue-cli與vuex

如何在vue-cli中使用vuex

項目搭建及添加vuex

當我們使用vue-cli搭建一個vue項目的時候(假設項目名為learn-vuex),搭建完成后的文件目錄是這樣子的

詳解如何在vue-cli中使用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文件夾,在文件夾中創建如下幾個文件

詳解如何在vue-cli中使用vuex 

我們可以隨意設置文件名,但最好可以通過文件名就能判斷出這個文件是用來干嘛的

  1. index.js:整合各個模塊,創建并導出vuex實例
  2. rootState.js:配置vuex實例的state選項
  3. getters.js:getter選項
  4. mutations.js:mutations選項
  5. actions.js:actions選項

在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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

修武县| 南汇区| 高平市| 榕江县| 昭苏县| 德令哈市| 襄汾县| 伊金霍洛旗| 牡丹江市| 新竹市| 龙门县| 海林市| 合作市| 焦作市| 宜君县| 洪泽县| 石屏县| 浮梁县| 九台市| 分宜县| 信宜市| 浦北县| 施甸县| 尚志市| 宿松县| 清水河县| 玉林市| 婺源县| 德州市| 临洮县| 堆龙德庆县| 哈密市| 谢通门县| 武隆县| 海南省| 交城县| 株洲县| 丹阳市| 启东市| 金塔县| 北安市|