1. 程式人生 > 程式設計 >詳解Vuex的屬性和作用

詳解Vuex的屬性和作用

目錄
  • x是什麼?
  • Vuex的5個屬性
    • vuex 的 State 特性是?
    • vuex 的 Getter 特性是?
    • vuex 的 mauation 特性是?
    • vuex 的 action 特性是?
  • 什麼情況下應該使用 Vuex?
    • 總結

      Vuex是什麼?

      VueX是一個專門為 Vue. 應用設計的狀態管理SnGHLQH架構,統一管理和維護各個vue元件的可變化狀態(你可以理解成 vue 元件裡的某些 data )。

      vuex 可以理解為一種開發模式或框架。比如 有 thinkphp , 有 spring 等。

      通過狀態(資料來源) 集中管理驅動元件的變化(好比 spring 的 IOC 容器對 bean 進行集中管理)。

      Vuex有五個核心概念,state, getters,mutations,actions,modules

      應用級的狀態集中放在 store 中; 改變狀態的方式是提交 mutations ,這是個同步的事物; 非同步邏輯 應該封裝在 action 中。

      Cuex借鑑了 Flux、Redux、和 The Elm Architecture。與其他模式不同的是,Vuex 是專門為 Vue.js 設計的狀態管理庫,以利用 Vue.js 的細粒度資料響應機制來進行高效的狀態更新。

      狀態管理: 簡單理解就是統一管理和維護各個vue元件的可變化狀態(你可以理解成vue元件裡的某些data)

      Vuex的5個屬性

      • state:單一狀態樹,用一個物件就包含了全部的應用層級狀態。
      • getters:就像計算屬性一樣,getter 的返回值會根據它的依賴被快取起來,且只有當它的依賴值發生了改變才會被重新計算。
      • mutations:每個mutation都有一個字串的事件型別 (type) 和一個回撥函式 (handler)。
      • action:action 類似於mutation,不同在於:action 提交的是mutation,而不是直接變更狀態;action可以包含任意非同步操作。
      • modules:模組化vuex,每個模組擁有自己的 state、mutation、action、getter、甚至是巢狀子模組。

      vuex 的 State 特性是?

      1 、Vuex 就是一個倉庫,倉庫裡面放了很多物件。其中 state 就是資料來源存放地,對應於與一般 Vue 物件 裡面的 data。

      2 、state 裡面存放的資料是響應式的,Vue 元件從 store 中讀取資料,若是 store 中的資料發生改變,依賴 這個資料的元件也會發生更新。

      3 、它通過 mapState 把全域性www.cppcns.com的 state 和 getters 對映到當前元件的 computed 計算屬性中。

      vuex 的 Getter 特性是?

      1 、getters 可以對 State 進行計算操作,它就是 Store 的計算屬性

      2 、 雖然在元件內也可以做計算屬性,但是 getters 可以在多元件之間複用

      3 、 如果一個狀態只在一個元件內使用,是可以不用 getters

      vuex 的 mauation 特性是?

      1、mutation是一個物件包含多個直接更新state的方法(回撥函式SnGHLQH)

      2、只能包含同步的程式碼,不能寫非同步程式碼

      vuex 的 action 特性是?

      1 、action 類似於 mutation ,不同在於:

      2 、action 提交的是 mutation ,而不是直接變更狀態。

      3 、action 可以包含任意非同步操作

      什麼情況下應該使用 Vuex?

      雖然 Vuex 可以幫助我們管理共享狀態,但也附帶了更多的概念和框架。這需要對短期和長期效益進行權衡。

      如果不打算開發大型單頁應用,使用 Vuex 可能是繁瑣冗餘的。確實是如此——如果您的應用夠簡單,您最好不要使用 Vuex。一個簡單的global event bus就足夠您所需了。但是,如果您需要構建是一箇中大型單頁應用,您很可能會考慮如何更好地在元件外部管理狀態,Vuex 將會成為自然而然的選擇。

      總結

      本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注我http://www.cppcns.com們的更多內容!