1.Nuxt中其實是自帶了vuex的,所以不需要你進行安裝丐谋,在根目錄的store文件夾中新建index.js
2.在store中新建modules文件夾芍碧,然后,創(chuàng)建一個base.js号俐,這個命名是隨意的泌豆,不需要一定是base,我在里面只是想存放一個屏幕大小的變量吏饿,所以取名為base.js
3.一般大型程序或者是你想規(guī)范的開發(fā)的話踪危,這個index.js只是作為一個入口文件,只需要記錄引用別的js文件中的內容即可猪落,即使你做的是很小的項目贞远,只是練手,我也覺得這樣子做會更好笨忌。打開index.js蓝仲,寫入以下內容,相當于就是將base.js里面的內容引用到了index.js里面去
import Vuefrom 'vue';
import Vuexfrom 'vuex';
import base from './modules/base';? ? //引用base.js
Vue.use(Vuex);
const store = () =>new Vuex.Store({
modules: {
base? ? ? ? ? ? ? ? //base就是base.js
}
});
export default store
4.打開base.js官疲,寫入以下內容袱结,關于vuex更詳細的信息,請戳這里
const state = ({? ? ? //state里面存放的是變量途凫,如果你要注冊全局變量垢夹,寫這里
????isPc:true,
? ? ?showImg:true
});
/*const getters = {? ? ? ? ? ? ? ? //getters相當于是state的計算屬性,如果你需要將變量的值進行計算维费,然后輸出果元,寫這里
include: (state) => (val) => {
return state.list.indexOf(val) > -1;
}
}
;*/
const mutations = {? ? ? ?//修改store中的變量的方法促王,如果你要改變變量的值,就寫這里
SET_isPc(state, value) {
state.isPc = value;
? },
? SET_showImg(state, value) {
state.showImg = value;
? }
};
/*const actions = {? ? ? ? ? ? //actions提交的是mutations而晒,相當于就是改變變量的方法的重寫蝇狼,但是,actions是可以進行異步操作的
async setIsPc({state, commit}, val) {
commit('SET_isPc', val);
}
};*/
export default {
namespaced:true,? ? ? ? ? ? //命名空間
? state,? ? ? ? ? ? //這里你用到了哪幾個屬性就寫哪幾個欣硼,不需要的可以注釋掉
? // getters,
// actions,
? mutations
};
5.在平常組件中的使用题翰,首先引用你需要的變量或者是改變變量的方法或者是計算屬性
import {mapState,mapMutations}from 'vuex'
//如果引用actions就是mapActions
//如果引用getters就是mapGetters
6.state和getters寫computed計算屬性里面
computed:{
...mapState('base', {
isPc: state => state.isPc,? ? ? ? ? ? //變量的名字
? })
},
7.mutations和actions寫methods方法里面,base就是你引用的base.js
methods:{
...mapMutations('base', [
????'SET_isPc',????????????//mutations的名字
? ? 'SET_showImg'? ? ? ? //mutations的名字
? ]),
}