1、在vue專案的src目錄下建立store資料夾,建立index.js檔案
//store/index.jsimport vue from 'vue'
import vuex from 'vuex'
vue.use(vuex);
const store = new vuex.store(,
mutations:
}});
export default store
2、store
main.js中註冊store
選項,該 store 例項會注入到根元件下的所有子元件中,且子元件能通過this.$store
訪問到
import store from './store'...new vue()
3、state
在子元件中訪問更改狀態,有多種方式
1)this.$store.state.count
2) 當需要獲取多個狀態時,使用
mapstate
輔助函式,它會返回乙個物件
檢查報告詳情}}click
當需要對state中的資料做某種計算時,一般使用
computed:}
當多個子元件需要相同的計算時,可以將這些方法寫到store的getters中
state: ,]}, getters:
},
子元件呼叫
/*listcount () ,*/todoitem () ,
//mapgetters 輔助函式僅僅是將 store 中的 getter 對映到區域性計算屬性:
...mapgetters(['listcount'])
4、mutation
更改 vuex 的 store 中的狀態的唯一方法是提交 mutation
每個 mutation 都有乙個字串的 事件型別 (type) 和 乙個 **函式 (handler)。這個**函式就是我們實際進行狀態更改的地方,並且它會接受 state 作為第乙個引數
觸發mutation中的事件:store.commit('increment')
向store.commit
傳入額外的引數,即 mutation 的 載荷(payload)
//.vuemethods:
}//store
mutations: else
}}
載荷一般是乙個物件,這樣可以包含多個字段並且記錄的 mutation 會更易讀
methods: );}}//
mutations: else
}}
methods: );this.$store.commit()
}*/...mapmutations()
}
物件的方式提交:type=對應的mutation方法
this.$store.commit()
mutation 必須是同步函式
在 mutation 中混合非同步呼叫會導致你的程式很難除錯。例如,當你呼叫了兩個包含非同步**的 mutation 來改變狀態,你怎麼知道什麼時候**和哪個先**呢?這就是為什麼我們要區分這兩個概念。為了處理非同步操作,讓我們來看一看 action。
5、action
action 類似於 mutation,不同在於:
actions: */increment ()
}
action 函式接受乙個與 store 例項具有相同方法和屬性的 context 物件,因此你可以呼叫context.commit
提交乙個 mutation,或者通過context.state
和context.getters
來獲取 state 和 getters。
action 通過store.dispatch
方法觸發,在 action 內部執行非同步操作
methods: );//this.$store.commit()
this.$store.dispatch('incrementasync') }}
//import types from './mutationtypes'
actions: */
[types.increment] () ,
[types.incrementasync] () ,500)
} }
actions 支援同樣的載荷方式和物件方式進行分發
在元件中分發 action
使用mapactions
輔助函式將元件的 methods 對映為store.dispatch
呼叫
import from 'vuex'methods: );
//this.$store.commit()
this.$store.dispatch('incrementasync')
}*//*...mapmutations()*/
...mapactions()
}
store.dispatch
可以處理被觸發的 action 的處理函式返回的 promise,並且store.dispatch
仍舊返回 promise
handlecountadd () )}
6、 modules
將 store 分割成模組(module)。每個模組擁有自己的 state、mutation、action、getter、甚至是巢狀子模組——從上至下進行同樣方式的分割
const modulea =
}const moduleb =
}const store = new vuex.store(
})computed:
}
vue專案中使用vuex
import vue from vue import vuex from vuex import mutations from mutations import actions from actions import getters from getters import from utils au...
vue中的vuex的使用
vuex是乙個專為vue應用程式中資料的狀態的管理技術。要想使用vuex首先我們要安裝 基於npm包 在專案檔案 按住shift鍵 滑鼠右鍵 在命令列終端開啟 輸入 npm i vuex s s是儲存本地的pack.json檔案中 在vue專案的main.js中引入 vuex import vuex...
在vue專案裡面使用vuex
安裝成功之後在 vue專案的目錄建立store資料夾 在main.js檔案裡面引入store.js檔案 import vue from vue import router from router import store from store store vue.config.productiont...