Vuex 入門

什么是Vuex ?

Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。Vuex 也集成到 Vue 的官方調(diào)試工具devtools extension,提供了諸如零配置的 time-travel 調(diào)試、狀態(tài)快照導(dǎo)入導(dǎo)出等高級調(diào)試功能。

什么情況下使用Vuex

一般情況下,我們需要根據(jù)項(xiàng)目的實(shí)際大小來決定是否需要引入Vuex,如果相對需要存儲的內(nèi)容不是特別多的時候,那么我們也可以通過本地存儲進(jìn)行完成一些數(shù)據(jù)的存儲以及操作。因?yàn)閷τ谔唵蔚捻?xiàng)目來說,使用 Vuex 可能是繁瑣冗余的。

示例:

我們來看一下官網(wǎng)上的一段代碼,內(nèi)容如下所示:

new Vue({
  // state數(shù)據(jù)源
  data () {
    return {
      count: 0
    }
  },
  // view視圖
  template: `
    <div>{{ count }}</div>
  `,
  // actions事件
  methods: {
    increment () {
      this.count++
    }
  }
})

這是一個很簡單的增長型計(jì)數(shù)功能頁面,通過事件 increment,實(shí)現(xiàn) count的增長,然后渲染到界面上去。

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

  • state:驅(qū)動應(yīng)用的數(shù)據(jù)源。

  • view:以聲明方式將 state 映射到視圖。

  • actions:響應(yīng)在 view上的用戶輸入導(dǎo)致的狀態(tài)變化,然后去影響state

下圖是一種”單向數(shù)據(jù)流“的理念:

這個理念的缺點(diǎn)是,當(dāng)我們的應(yīng)用遇到多個組件共享狀態(tài)時,單向數(shù)據(jù)流的簡潔性很容易被破壞,如:

  • 多個視圖依賴于同一狀態(tài)。傳參的方法對于多層嵌套的組件將會非常繁瑣,并且對于兄弟組件間的狀態(tài)傳遞無能為力。

  • 來自不同視圖的行為需要變更同一狀態(tài)。我們經(jīng)常會采用父子組件直接引用或者通過事件來變更和同步狀態(tài)的多份拷貝。以上的這些模式非常脆弱,通常會導(dǎo)致無法維護(hù)的代碼。

因此,我們?yōu)槭裁床话呀M件的共享狀態(tài)抽取出來,以一個全局單例模式管理呢?在這種模式下,我們的組件樹構(gòu)成了一個巨大的“視圖”,不管在樹的哪個位置,任何組件都能獲取狀態(tài)或者觸發(fā)行為!

通過定義和隔離狀態(tài)管理中的各種概念并通過強(qiáng)制規(guī)則維持視圖和狀態(tài)間的獨(dú)立性,我們的代碼將會變得更結(jié)構(gòu)化且易維護(hù)。

Vuex的五個核心概念

Vuex有五個核心概念,分別是stategetters、 mutations、 actions、 modules

  • stateVuex的基本數(shù)據(jù),用來存儲變量。

  • getters:從基本數(shù)據(jù)state派生的數(shù)據(jù),相當(dāng)于state的計(jì)算屬性。

  • mutation:提交更新數(shù)據(jù)的方法,必須是同步的,如果需要異步使用action。每個 mutation 都有一個字符串的事件類型和一個回調(diào)函數(shù)handler。

  • action:和mutation的功能大致相同,不同之處在于action 提交的是mutation,而不是直接變更狀態(tài)。action 可以包含任意異步操作。

  • modules:模塊化Vuex,可以讓每一個模塊擁有自己的state、mutation、action、getters,使得結(jié)構(gòu)非常清晰,方便管理。

鏈接:https://www.9xkd.com/

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

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

  • 那如何獲取到state的數(shù)據(jù)呢? 一般會在組件的計(jì)算屬性(computed)獲取state的數(shù)據(jù)(因?yàn)?,?jì)算屬性會...
    qiaoguoxing閱讀 120評論 0 0
  • (1)簡單的頁面中使用單向數(shù)據(jù)流 (2)vuex的流程圖 (3)store 由于 store 中的狀態(tài)是響應(yīng)式的,...
    西蘭花偉大炮閱讀 744評論 0 3
  • Vuex用法 前言: vuex, 是vue 的一個插件,作用是 對vue應(yīng)用中多個組件的共享狀態(tài)進(jìn)行集中式的管理(...
    _Youarethehero閱讀 395評論 0 0
  • 什么是Vuex Vue.js官網(wǎng)中是這樣描述的: Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。...
    池塘里快樂的小跳蛙閱讀 399評論 0 0
  • 安裝 npm npm install vuex --save 在一個模塊化的打包系統(tǒng)中,您必須顯式地通過Vue.u...
    蕭玄辭閱讀 3,049評論 0 7

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