在vue項目中各組件之間傳值非常的好用,但是當組件數量多的時候,就會感覺到多個組件之間傳值就會變的非常痛苦。因此就需要使用vuex來管理數據值,這樣在任何頁面不需要傳值過來的情況下就可以拿到我們想要的值,值被修改后,所有用到該值得地方都會修改。
首先創建完vue項目后安裝vuex,一般創建vue項目的過程中會自動安裝vuex,在此我們從頭開始,默認vue項目中沒有vuex。
在項目根目錄打開cmd命令窗口,輸入以下命令:
npm install vuex --save
安裝成功之后會看到這個界面
然后輸入命令啟動項目:
npm run serve
成功之后看到以下結果
隨便復制一個路徑在瀏覽器打開,會看到如下頁面
看到這個界面說明項目啟動成功,然后我們在項目的src目錄下新建一個目錄store,在該目錄下新建一個index.js文件,我們用來創建vuex實例,然后在該文件中引入vue和vuex,創建Vuex.Store實例保存到變量store中,最后使用export default導出store:
然后我們在main.js文件中引入該文件,在文件里面添加 import store from ‘./store’;,再在vue實例全局引入store對象;
然后我們就可以開始編寫我們的vuex業務代碼了,在vuex中有四個屬性:State,Getters,Mutations,Actions。我們一一介紹
1.State
vuex中的數據源,一般用來保存數據,例如登錄人的id,name,等等信息,首先在store/index.js文件里面寫入如下代碼
然后在home.vue中用
這個時候頁面上就得到了我們的1
Getters
Getter相當於vue中的computed計算屬性,getter 的返回值會根據它的依賴被緩存起來,且只有當它的依賴值發生了改變才會被重新計算,這里我們可以通過定義vuex的Getter來獲取,Getters 可以用於監聽、state中的值的變化,返回計算后的結果,這里我們修改store/index.js文件如下:
接着在home.vue中添加以下代碼
然后在頁面中可以看到修改后的值
Mutations
數據我們在頁面是獲取到了,但是如果我們需要修改count值怎么辦?如果需要修改store中的值唯一的方法就是提交mutation來修改,在store/index.js添加以下代碼
接着在home.vue中添加兩個按鈕,一個加,一個減,點擊加按鈕執行addFun方法,點擊減按鈕執行subtractFun方法,然后在里面直接提交mutations中的方法修改值
點擊頁面的加或減會看到值改變
Actions
我們看到,當點擊三次后值從2變成了-1;頁面上的值是改變了;我們達到了修改store中狀態值的目的,但是,官方並不建議這樣直接去修改store里面的值,而是讓我們去提交一個actions,在actions中提交mutation再去修改狀態值,接下來我們修改store/index.js文件,先定義actions提交mutation的函數:
接着在home.vue做修改
運行項目效果一致
我們這里已經實現了一個基本的vuex修改狀態值的完整流程,如果想要加減指定的數值,可以通過傳參,在home.vue中修改代碼如下
接着在store/index.js中接收參數
查看運行效果