很多人不明白矫付,this.$store與store的區(qū)別
簡單來說匿辩,如果你在根組件下注入了store那么所有的.vue文件里使用就可以直接用 this.$store.xxxx
;而在js文件里面如果想要使用store甥郑,就必須先引入import store from '@/store'
然后使用store.xxx
袱饭,因為js里面是打印不出來this.$store
的
vue官網(wǎng)是這么說的:
為了在 Vue 組件中訪問 this.$store property孟害,你需要為 Vue 實例提供創(chuàng)建好的 store腕让。Vuex 提供了一個從根組件向所有子組件,以 store 選項的方式“注入”該 store 的機(jī)制:
//main.js
import store from './store'
new Vue({
el: '#app',
store,
})
而store文件里面的內(nèi)容如下:
//store/index.js文件
import Vue from 'vue';
import Vuex from 'vuex';
import user from './modules/user.js';
Vue.use(Vuex);
export default new Vuex.Store({
modules: {
user
},
getters
});
//modules/user.js文件
const user = {
state: {
userInfo: {},
},
actions: {
},
mutations: {
}
}
export default user
這樣就把store注入到了所有子組件
再測試下js文件使用store的問題:新建了一個文件src/test.js,在main.js里面引入此js悦昵;
// src/test.js文件
console.log(this.$store)
報錯如下:
又將內(nèi)容改成如下:
// src/test.js文件
import store from './store/';
console.log(store)
console.log(this)
console.log(this.$store)
控制臺返回值中肴茄,this與 this.$store都獲取不到;如下
總結(jié):
vue文件中使用store直接用this.$store.xxxx即可但指,因為在main.js里面注入store之后寡痰,給所有的vue子組件都注入了store(組件是指.vue文件,不包括js文件,所以js必須單獨引用)
而所有的js文件要使用store必須引入才能使用棋凳,而且js文件始終打印不出來this.$store