VUE專案爬坑 4 vuex使用注意

2022-03-07 19:45:33 字數 3012 閱讀 8238

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,這個計算屬性...