1、【修改資料mutations】:state中的資料,不能直接修改,如果想要修改,必須通過 mutations
2、【獲取資料this.$store.state.***】:如果元件想要直接 從 state 上獲取資料: 需要 this.$store.state.***
3、【this.$store.commit('方法的名稱', 唯一的乙個引數)】:如果 元件,想要修改資料,必須使用 mutations 提供的方法,需要通過 this.$store.commit('方法的名稱', 唯一的乙個引數)
4、【getters對資料做包裝】:如果 store 中 state 上的資料, 在對外提供的時候,需要做一層包裝,那麼 ,推薦使用 getters, 如果需要使用 getters ,則用 this.$store.getters.***只有共享的資料,才有權利放到vuex中;元件內部私有的資料,只要放到元件的data中即可;
vuex是為了儲存元件之間共享資料而誕生的,如果元件之間有要共享的資料,可以直接掛載到vuex中,而不必通過父子元件之間傳值了,如果元件的資料不需要共享,此時,這些不需要共享的私有資料,沒有必要放到vuex中;
props 和data和vuex的區別;
vuex中的state相當於元件中的data,mutations相對於元件中的methods,用來修改state中的資料因為vuex是公共的資料倉儲,所以不推薦外部直接修改資料,所以mutations就相當於是乙個門衛,你外部要修改,告訴我,我幫你修改第二個引數可以傳陣列、傳物件都可,就相當於可以傳多個引數
//入口檔案import vue from 'vue'
//配置vuex的步驟//1. 執行 cnpm i vuex -s //2. 匯入包
import vuex from 'vuex'
//3. 註冊vuex到vue中
vue.use(vuex)
//4. new vuex.store() 例項,得到乙個 資料倉儲物件
var store = newvuex.store(,
mutations: ,
//注意: 如果元件想要呼叫 mutations 中的方法,只能使用 this.$store.commit('方法名')
//這種 呼叫 mutations 方法的格式,和 this.$emit('父元件中方法名')
subtract(state, obj)
},getters:
//經過咱們回顧對比,發現 getters 中的方法, 和元件中的過濾器比較類似,因為 過濾器和 getters 都沒有修改原資料, 都是把原資料做了一層包裝,提供給了 呼叫者;
//其次, getters 也和 computed 比較像, 只要 state 中的資料發生變化了,那麼,如果 getters 正好也引用了這個資料,那麼 就會立即觸發 getters 的重新求值;}})
1、【只負責 對外提供資料,不負責 修改資料】:vuex中的 getters, 只負責 對外提供資料,不負責 修改資料,如果想要修改 state 中的資料,請 去找 mutations
2、【和過濾器比較像】:經過咱們回顧對比,發現 getters 中的方法, 和元件中的過濾器比較類似,因為 過濾器和 getters 都沒有修改原資料, 都是把原資料做了一層包裝,提供給了 呼叫者;
3、【和 computed 比較像】:其次, getters 也和 computed 比較像, 只要 state 中的資料發生變化了,那麼,如果 getters 正好也引用了這個資料,那麼 就會立即觸發 getters 的重新求值;
getters://經過咱們回顧對比,發現 getters 中的方法, 和元件中的過濾器比較類似,因為 過濾器和 getters 都沒有修改原資料, 都是把原資料做了一層包裝,提供給了 呼叫者;
//其次, getters 也和 computed 比較像, 只要 state 中的資料發生變化了,那麼,如果 getters 正好也引用了這個資料,那麼 就會立即觸發 getters 的重新求值;
}
//入口檔案
import vue from 'vue'
//配置vuex的步驟
//1. 執行 cnpm i vuex -s
//2. 匯入包
import vuex from 'vuex'
//3. 註冊vuex到vue中
vue.use(vuex)
//4. new vuex.store() 例項,得到乙個 資料倉儲物件
var store = new
vuex.store(,
mutations: ,
//注意: 如果元件想要呼叫 mutations 中的方法,只能使用 this.$store.commit('方法名')
//這種 呼叫 mutations 方法的格式,和 this.$emit('父元件中方法名')
subtract(state, obj)
},getters:
//經過咱們回顧對比,發現 getters 中的方法, 和元件中的過濾器比較類似,因為 過濾器和 getters 都沒有修改原資料, 都是把原資料做了一層包裝,提供給了 呼叫者;
//其次, getters 也和 computed 比較像, 只要 state 中的資料發生變化了,那麼,如果 getters 正好也引用了這個資料,那麼 就會立即觸發 getters 的重新求值;}})
//總結:
//1. state中的資料,不能直接修改,如果想要修改,必須通過 mutations
//2. 如果元件想要直接 從 state 上獲取資料: 需要 this.$store.state.***
//3. 如果 元件,想要修改資料,必須使用 mutations 提供的方法,需要通過 this.$store.commit('方法的名稱', 唯一的乙個引數)
//4. 如果 store 中 state 上的資料, 在對外提供的時候,需要做一層包裝,那麼 ,推薦使用 getters, 如果需要使用 getters ,則用 this.$store.getters.***
vue()
4 vuex的基本使用
1.使用vuex統一管理狀態的好處 1.能夠在vuex中集中管理共享的資料,易於開發和後期維護 2.能夠高效地實現元件之間的資料共享,提高開發效率 3.儲存在vuex中的資料都是響應式的,能夠實時保持資料與頁面的同步 2.vuex的核心概念 1.state提供唯一的公共資料源,所有的資料都要統一放到...
詳解Vue爬坑之vuex初識
在 vue.js 的專案中,如果專案結構簡單,父子元件之間的資料傳遞可以使用 props 或者 emit 等方式.但是如果是大型專案,很多時候都需要在子元件之間傳遞資料,使用之前的方式就不太方便。vue 的狀態管理工具 vuex 完美的解決了這個問題。一 安裝並引入 vuex 專案結構 首先使用 n...
vue爬坑之路4 計算屬性
original message computed reversed message var vm new vue in comonet methods data.now 返回當前時間字串 相比而言,每當重新渲染的時候,method呼叫總會執行函式。關於快取。假設有乙個重要的計算屬性a,這個計算屬性...