Vuex 是什么?

一、Vuex 是什么?

??Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。

這個(gè)狀態(tài)自管理應(yīng)用包含以下幾個(gè)部分:

  • state,驅(qū)動(dòng)應(yīng)用的數(shù)據(jù)源;
  • view,以聲明方式將 state 映射到視圖;
  • actions,響應(yīng)在 view 上的用戶輸入導(dǎo)致的狀態(tài)變化。

二、引入Vuex(前提是已經(jīng)用Vue腳手架工具構(gòu)建好項(xiàng)目)

  • 1、利用npm包管理工具,進(jìn)行安裝 vuex。在控制命令行中輸入下邊的命令就可以了。

    npm install vuex --save

??要注意的是這里一定要加上 –save,因?yàn)槟氵@個(gè)包我們?cè)谏a(chǎn)環(huán)境中是要使用的。

  • 2、新建一個(gè)store文件夾(這個(gè)不是必須的),并在文件夾下新建store.js文件,文件中引入我們的vue和vuex。
    import Vue from 'vue';
    import Vuex from 'vuex';
  • 3、使用我們vuex,引入之后用Vue.use進(jìn)行引用。
    Vue.use(Vuex);

??通過這三步的操作,vuex就算引用成功了,接下來我們就可以操作了。

  • 4、在main.js 中引入新建的vuex文件
   import storeConfig from './vuex/store'
  • 5、再然后 , 在實(shí)例化 Vue對(duì)象時(shí)加入 store 對(duì)象 :
    new Vue({
      el: '#app',
      router,
      store, //將store掛載到vue上,通過在根實(shí)例中注冊(cè) store 選項(xiàng),該 store 實(shí)例會(huì)注入到根組件下的所有子組件中,且子組件能通過 this.$store訪問到.
      template: '<App/>',
      components: { App }
    })

三、Vuex核心及最基本的 Vuex 記數(shù)示例

??每一個(gè) Vuex 應(yīng)用的核心就是 store(倉庫)?!皊tore”基本上就是一個(gè)容器,它包含著你的應(yīng)用中大部分的狀態(tài) (state)。Vuex 和單純的全局對(duì)象有以下兩點(diǎn)不同:

    1. Vuex 的狀態(tài)存儲(chǔ)是響應(yīng)式的。當(dāng) Vue 組件從 store 中讀取狀態(tài)的時(shí)候,若 store 中的狀態(tài)發(fā)生變化,那么相應(yīng)的組件也會(huì)相應(yīng)地得到高效更新。
    1. 你不能直接改變 store 中的狀態(tài)。改變 store 中的狀態(tài)的唯一途徑就是顯式地提交 (commit) mutation。這樣使得我們可以方便地跟蹤每一個(gè)狀態(tài)的變化,從而讓我們能夠?qū)崿F(xiàn)一些工具幫助我們更好地了解我們的應(yīng)用。

最簡(jiǎn)單的 Store

??安裝Vuex 之后,讓我們來創(chuàng)建一個(gè) store。創(chuàng)建過程直截了當(dāng)——僅需要提供一個(gè)初始 state 對(duì)象和一些 mutation:

// 如果在模塊化構(gòu)建系統(tǒng)中,請(qǐng)確保在開頭調(diào)用了 Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  }
})

??現(xiàn)在,你可以通過 store.state 來獲取狀態(tài)對(duì)象,以及通過 store.commit 方法觸發(fā)狀態(tài)變更:

store.commit('increment')
console.log(store.state.count) // -> 1

??再次強(qiáng)調(diào),我們通過提交mutation 的方式,而非直接改變 store.state.count,是因?yàn)槲覀兿胍鞔_地追蹤到狀態(tài)的變化。這個(gè)簡(jiǎn)單的約定能夠讓你的意圖更加明顯,這樣你在閱讀代碼的時(shí)候能更容易地解讀應(yīng)用內(nèi)部的狀態(tài)改變。此外,這樣也讓我們有機(jī)會(huì)去實(shí)現(xiàn)一些能記錄每次狀態(tài)改變,保存狀態(tài)快照的調(diào)試工具。有了它,我們甚至可以實(shí)現(xiàn)如時(shí)間穿梭般的調(diào)試體驗(yàn)。

??由于 store 中的狀態(tài)是響應(yīng)式的,在組件中調(diào)用 store 中的狀態(tài)簡(jiǎn)單到僅需要在計(jì)算屬性中返回即可。觸發(fā)變化也僅僅是在組件的 methods 中提交 mutation

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Vuex是什么? Vuex 是一個(gè)專為 Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件...
    蕭玄辭閱讀 3,242評(píng)論 0 6
  • 安裝 npm npm install vuex --save 在一個(gè)模塊化的打包系統(tǒng)中,您必須顯式地通過Vue.u...
    蕭玄辭閱讀 3,053評(píng)論 0 7
  • 官方解釋: Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀...
    浩3108閱讀 792評(píng)論 0 3
  • Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)...
    白水螺絲閱讀 4,809評(píng)論 7 61
  • 十年如一日的過著日子 日子總得過去 過去是那么漫長(zhǎng)又飛逝 明明知道生活就是無趣 無聊的日子仍是漫長(zhǎng) 可它卻轉(zhuǎn)眼間-...
    語澀閱讀 265評(píng)論 0 3

友情鏈接更多精彩內(nèi)容