之前寫過很多vue項目,項目中使用過vuex,那個時候看vuex愣是雲里霧里,都是照葫蘆畫瓢使用,沒有清楚弄明白,
今天再看一下文檔,感覺茅塞頓開,特別寫下來,給需要的人借鑒
一,什么是vuex
Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。
官方文檔是這么說的,反正我是沒看明白
以自己的話說vuex是一個把多個組件通用的數據我們把它拿出來,放到一個叫store里面管理,在需要使用的組件里,我們可以拿出來使用
簡單來說就是data的共享屬性
二,關於store
“store”基本上就是一個容器,它包含着你的應用中大部分的狀態 (state)。
暫時先把state當成我們通用data來看吧,這樣就好理解咯~
三,關於State
state就是我們項目全局通用的data屬性,並且這些屬性是響應式的,也就是說當屬性發生改變時,state是會動態響應的
四,關於Getter
Getter可以使我們需要從 store 中的 state 中派生出一些狀態,例如對列表進行過濾並計數等
Vuex 允許我們在 store 中定義“getter”(可以認為是 store 的計算屬性)。就像計算屬性一樣,
getter 的返回值會根據它的依賴被緩存起來,且只有當它的依賴值發生了改變才會被重新計算。
五,關於Mutation
更改 Vuex 的 store 中的狀態的唯一方法是提交 mutation。Vuex 中的 mutation 非常類似於事件:每個 mutation 都有一個字符串的 事件類型 (type) 和 一個 回調函數 (handler)。這個回調函數就是我們實際進行狀態更改的地方,並且它會接受 state 作為第一個參數
五,關於Action
Action 類似於 mutation,不同在於 (划重點哦,很多面試官會問噠~) :
1, 提交的是 mutation,而不是直接變更狀態。
2, 可以包含任意異步操作。
六,關於Module
由於使用單一狀態樹,應用的所有狀態會集中到一個比較大的對象。當應用變得非常復雜時,store 對象就有可能變得相當臃腫。為了解決以上問題,Vuex 允許我們將 store 分割成模塊(module)。每個模塊擁有自己的 state、mutation、action、getter、甚至是嵌套子模塊——從上至下進行同樣方式的分割
七,如何使用
我們講了那么多理論知識,那實際情況我們如何使用呢,一起來看吧:
首先是安裝
(1)npm install vuex --save
(2)新建倉庫
在src目錄下新建一個文件夾,我們命名為store好了,然后在該文件夾下面創建一個js文件,我們還是叫他store好啦,截圖看起來更方便哦
然后開始在main.js引入
安裝和引入都好了,我們來玩玩吧
在剛剛建的store文件里
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
我們存兩個變量來看看
找個頁面,在creat里打印一下this
creat(){
console.log(this)
}
嗯,找到我們剛剛創建的倉庫啦
來看看倉庫里面有什么吧
看到我們定義的state和mutation咯
那我們怎么拿到數據呢?
我們都可以打印出來,聰明的你應該不會被難倒吧
1,舉個例子 我們來拿state的name吧
creat(){
console.log(this.$store.state.name)
}
看,數據打印出來啦,是不是超級簡單
數據拿到了,我想改變他怎么辦?別擔心,我們有mutation
這是我們之前定義的方法
在其他頁面我們寫個function吧
然后在data里定義msg的值吧
然后我們調用changeName
看到了嗎 我們的數據改變咯
這里只是簡單介紹了vuex,帶領大家入門,詳細的還是去擼官方文檔吧,再見~
作者:啥啥啥娜娜
鏈接:https://www.jianshu.com/p/cba77015cd47
作者:www說
鏈接:https://www.imooc.com/article/70834
來源:慕課網