1. 程式人生 > >vuex 2.0學習心得(上)

vuex 2.0學習心得(上)

Vuex (vue2.0) 基礎(理解)

相關詞彙認識

1.      devtools 工具

2.      backbend API後臺資料介面文件

3.      actions 動作作用

4.      dispatch 處理

5.      mutation 突變

6.      state 狀態

7.      store 倉庫

核心概念vuex 

Vuex的應用核心就是store,倉庫中包含著應用大部分的狀態。

 

官方文件中說明vuex的特點有兩個:(相比全域性變數而言)1.vue元件可以訪問store中的state值並且state的改變也可以影響到元件的中某些變數或者是方法執行狀態。2.vue元件不能直接的改變store中的狀態,改變的方式是顯式提交

 

注:1.顯示提交?? 2. 不能直接的改變store中的狀態??

目前理解:

1.mutations

,可以理解為vuex store mutations中定義的方法

就像程式碼中所示(這個完全可以對比newvue來理解,statedata)定義變數和mutations(method)方法)

2.不能直接改變的意思是:state 申明的變數不能通過直接獲取的形式進行改變例如:store.state.count++,而是要通過定義方法,呼叫方法,來改變定義的狀態值。例如呼叫下面的increment 方法,程式碼:store.commit('increment')

 

/ 如果在模組化構建系統中,請確保在開頭呼叫了 Vue.use(Vuex)

Vuex 簡單例項 

計數例項

const store =new Vuex.Store({

  state:{

    count:0

  },

  mutations:{

    increment (state){

      state.count++

    }

  }

})

Vuex (vue2.0) 基礎二(理解)

state 單一狀態樹

VUE使用單一的狀態樹,用一個物件包含了全部的應用層級的狀態,並且作為應用唯一的資料來源存在。每一個vue都有並且只有一個store(狀態庫)也就是單一的狀態樹。單一的狀態樹可以讓我們直接定位任意特定狀態片段。(單一狀態樹和模組化並不衝突

在 Vue 元件中獲得 Vuex 狀態

 

1.      如何在組建中展示狀態

在vue元件中的計算屬性中返回需要返回的狀態值。如下列子:

// 建立一個 Counter 元件

const Counter ={

  template:`<div>{{ count }}</div>`,

  computed:{

    count (){

      return store.state.count

    }

  }

}

每當store.state.count變化的時候,vue元件都會重新計算屬性,並且觸發更新關聯的DOM

然而這種模式,有些弊端,就是不同元件使用state的時候,在元件中要頻繁的匯入,這個的確好麻煩!!(能不能類似見一個公共的庫,在最起始的位置引入之後,在裡面後需補充所需要的狀態變數,這樣的話也相當於控制所有的狀態! 感覺66噠)

 

2.      Vuex通過store選項,提供了一種機制(什麼機制看程式碼),將狀態從根元件註冊到每一個元件中。

 Vue.use(Vuex) // 呼叫vuex

const app =new Vue({

  el:'#app',

  // store 物件提供給 “store” 選項,這可以把 store 的例項注入所有的子元件

  store,

  components:{ Counter },

  template:`

    <divclass="app">

     <counter></counter>

    </div>

  `

mapState 輔助函式

一個元件需要獲取多個狀態時候,將這些狀態都宣告為計算屬性會有些重複和冗餘。為了解決這個問題,我們可以使用 mapState 輔助函式幫助我們生成計算屬性,讓你少按幾次鍵:

Ps:什麼是語法糖:

需要宣告的是語法糖這個詞絕非貶義詞,它可以給我們帶來方便,是一種便捷的寫法,編譯器會幫我們做轉換;而且可以提高開發編碼的效率,在效能上也不會帶來損失。沒有按照常規語言格式,可以被編譯的簡寫程式碼。