cnpm install -D vuex

vuex我想應該可以理解為是一個 全局變量
在main.js 中注入 vuex:
import Vuex from 'vuex'
Vue.use(Vuex)
如果您不打算開發大型單頁應用,使用 Vuex 可能是繁瑣冗余的。確實是如此——如果您的應用夠簡單,您最好不要使用 Vuex。一個簡單的 store 模式就足夠您所需了。但是,如果您需要構建一個中大型單頁應用,您很可能會考慮如何更好地在組件外部管理狀態,Vuex 將會成為自然而然的選擇。 -----官網介紹
在src 下創建文件夾store;創建store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state:{
count:0
},
mutations:{
increment:state => state.count ++,
decrement:state => state.count --,
}
})
在 main.js 中導入:
import store from './store/store'
//實例化 store
new Vue({
el: '#app',
store, //掛載
router,
template: '<App/>',
components: { App }
})

vuex 核心倉庫是store(state,mutations,actions,getter,modules)。
action 提交mutation,而不是直接更改狀態
action 可以包括異步操作,mutation只能同步
modules 將store分割成模塊(modules),每個模塊擁有自己的(state,mutations,actions,getter);方便維護
store 改變狀態時通過 (commit) mutations
action 可異步操作 如加載本地json文件是異步
來自:https://www.cnblogs.com/songrimin/p/7815850.html
1, state
用來存放組件之間共享的數據。他跟組件的data選項類似,只不過data選項是用來存放組件的私有數據。
2, getters
有時候,我們需要對state的數據進行篩選,過濾。這些操作都是在組件的計算屬性進行的。如果多個組件需要用到篩選后的數據,那我們就必須到處重復寫該計算屬性函數;或者將其提取到一個公共的工具函數中,並將公共函數多處導入 - 兩者都不太理想。如果把數據篩選完在傳到計算屬性里就不用那么麻煩了,getters就是干這個的,你可以把getters看成是store的計算屬性。getters下的函數接收接收state作為第一個參數, getters 改變不了state的值,下一個mutation是唯一可以改變state的值
3,mutation
在 Vuex store 中,實際改變 狀態(state) 的唯一方式是通過 提交(commit) 一個 mutation。mutations下的函數接收state作為參數,接收一個叫做payload(載荷)的東東作為第二個參數,這個東東是用來記錄開發者使用該函數的一些信息,比如說提交了什么,提交的東西是用來干什么的,包含多個字段,所以載荷一般是對象(其實這個東西跟git的commit很類似)
還有一點需要注意:mutations方法必須是同步方法!
4,action
既然mutations只能處理同步函數,我大js全靠‘異步回調’吃飯,怎么能沒有異步,於是actions出現了
a, Actions 提交的是 mutations,而不是直接變更狀態。也就是說,actions會通過mutations,讓mutations幫他提交數據的變更。
b, Action 可以包含任意異步操作。ajax、setTimeout、setInterval不在話下
5,module
由於使用單一狀態樹,應用的所有狀態會集中到一個比較大的對象。當應用變得非常復雜時,store 對象就有可能變得相當臃腫。為了解決以上問題,Vuex 允許我們將 store 分割成模塊(module)。每個模塊擁有自己的 state、mutation、action、getter、甚至是嵌套子模塊——從上至下進行同樣方式的分割。
友情提示:
1, this.$store.commit 來觸發之前定義好的 mutations 中的方法
2, this.$store 獲取到 store,
3, this.$store.state 來獲取狀態對象,
4,dispatch:翻譯為‘派發、派遣’的意思,觸發事件時,dispatch就會通知actions(跟commit一樣一樣的)參數跟commit也是一樣的。
5,context:context 是與 store 實例具有相同方法和屬性的對象。 可以通過context.state和context.getters 來獲取 state 和 getters。
6,new Vuex.Store({}) 表示創建一個Vuex實例,通常情況下,他需要注入到Vue實例里. Store是Vuex的一個核心方法,字面上理解為“倉庫”的意思。
