1. 程式人生 > >來實現一個縮水版Vuex

來實現一個縮水版Vuex

對 Vuex 原始碼進行濃縮,DIY 一個小型 Vuex

功能如下

  1. 通過 $store.commit 改變 $store.state
  2. 實現 strict model

原始碼約70行左右比較好理解,下面講解一下兩個比較重要的點。

install

Vue.use(Vuex)實際上呼叫的是 Vuex 的 install 方法,該方法在每個元件的 beforeCreate 鉤子中為當前元件注入 $store,使所有元件的 $store 屬性都指向同一個物件,也就是建立 Vue 例項時傳入的 store 物件。

監聽 store

為什麼當 state 物件發生變化時檢視會被更新?原因是 store 內部建立了一個 Vue 物件對 state 進行監聽(見原始碼 resetStoreVM

方法)。而且上面也提到,使用 Vuex 後,所有元件的 $store 都引用的都是同一個 store。所以當 state 變化時,綁定了 state 的檢視都會更新。

原文地址:https://segmentfault.com/a/1190000017049048