一,什么是Vuex捂龄?
?????? vuex是一個專為vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式揩慕。vuex解決了組件之間同一狀態(tài)的共享問題。當(dāng)我們的應(yīng)用遇到多個組件之間的共享問題時會需要:
????? 多個組件依賴于同一狀態(tài)侮攀。傳參的方法對于多層嵌套的組件將會變得很繁瑣锣枝,并且對于兄弟組件間的傳遞無能為力。這需要你去學(xué)習(xí)下兰英,vue的編碼中多個組件之間的通訊的做法撇叁。來自不同組件的行為需要變更同一狀態(tài)。我們經(jīng)常會采用父子組件直接引用或者通過事件來變更和同步狀態(tài)的多份拷貝畦贸。以上的這些模式都很脆弱陨闹,通常會導(dǎo)致無法維護(hù)代碼。所以薄坏,這時就出現(xiàn)了Vuex趋厉,這是Vuex出現(xiàn)的背景。Vuex官網(wǎng)上這樣描述:Vuex是一個專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式胶坠。
???? 他采用集中式存儲管理應(yīng)用的所有組件的狀態(tài)觅廓。這里的關(guān)鍵在于集中式存儲管理。這意味著本來需要共享狀態(tài)的更新是需要組件之間的通訊涵但,而現(xiàn)在有了vuex杈绸,組件就都和store通訊了。這也是為什么官網(wǎng)再次會提到Vuex構(gòu)建大型應(yīng)用的價值矮瘟,如果你不打算開大大型的單頁應(yīng)用瞳脓,使用Vuex可能會變得很繁瑣,對于大型項(xiàng)目澈侠,可以使用Vuex作為不同組件之間的狀態(tài)管理劫侧,而對于小型的項(xiàng)目,推薦使用HTML5特有的屬性哨啃,localStroage和sessionStroage作為數(shù)據(jù)之間的傳遞烧栋。
上面的深入的理解可以給你對Vuex有一個簡單的認(rèn)識,但是Vuex的具體作用是什么呢拳球?通俗的講:
Vuex是一個狀態(tài)管理的插件审姓,可以解決不同組件之間的數(shù)據(jù)共享和數(shù)據(jù)持久化。
二祝峻,Vuex的使用
在vue-cli以安裝Vuex的情況下魔吐,直接引用扎筒。
沒有的話的步驟:
1,安裝Vuex酬姆,npm install vuex? --save 或??? cnpm install?? vuex? --save進(jìn)行安裝
2嗜桌,在src下新建一個名為vuex的文件夾
3,vuex文件夾里面新建一個store.js
4,在剛剛創(chuàng)建的store.js引入vue? 引入vuex并且使用use Vuex
5辞色,定義數(shù)據(jù)
6骨宠,定義方法
7,實(shí)例化 Vuex.store
8相满,暴露
完整代碼如下:
三诱篷,組件里如何使用vuex?
1雳灵,引入store
??????????? import?? store? from? “../vuex/store.js”
2,注冊
?????????? export default{
data(){
? ? return {? ? ? ? ? ? ?
? ? ? msg:'我是一個home組件',
?????? value1: null,
? ? }
},
store,
methods:{
? ? incCount(){
????????????? this.$store.commit('incCount');? /*觸發(fā) state里面的數(shù)據(jù)*/
? ? }
}
? }
3,獲取state里面的數(shù)據(jù)
??? this.$store.state數(shù)據(jù)
4闸盔、觸發(fā) mutations 改變 state里面的數(shù)據(jù)
????? this.$store.commit('incCount');