從 Vuex 0.6.x 遷移到 1.0
Vuex 2.0 已經發布了,但這份指南只涵蓋遷移到 1.0?這是打錯了嗎?此外,似乎 Vuex 1.0 和 2.0 也同時發表。這是怎麼回事?我該用哪一個並且哪一個相容 Vue 2.0呢?
#
Vuex 1.0 和2.0 如下:
都完全支援Vue 1.0 和2.0
- ##將在可預見的未來保留支援
然而它們的目標使用者稍微有所不同。
此遷移指南不涵蓋 Vuex 2.0 相關內容,因此如果您想了解更多,請查閱 Vuex 2.0 文件。
Vuex 1.0 主要是向下相容,所以升級只需要很小的改變。推薦擁有大量現存程式碼庫的用戶,或只想盡可能平滑升級 Vue 2.0 的用戶。這份指南致力於促進這一過程,但僅包括遷移說明。完整使用指南請查閱Vuex 1.0 文件。
目錄
帶有字串屬性路徑的store.watch
替換
store.watch 現在只接受函數。因此,下面範例你需要替換:
store.watch('user.notifications', callback)為:
store.watch( // 当返回结果改变... function (state) { return state.user.notifications }, // 执行回调函数 callback )這幫助你更完善的控制那些需要監聽的響應式屬性。
升級方式
在程式碼庫執行遷移工具,尋找在 store.watch 中使用字串作為第一個參數的例子。
Store 的事件觸發器移除
store 實例不再暴露事件觸發器(event emitter) 介面(on
, off
, emit
)。如果你之前使用 store 作為全域的 event bus,遷移說明相關內容請參考 此章節。
為了取代正在使用觀察store 本身觸發事件的這些接口,(例如:store.on('mutation', callback)
),我們引入新的方法store.subscribe
。在外掛程式中典型的使用方式如下:
var myPlugin = store => { store.subscribe(function (mutation, state) { // Do something... }) }
更多資訊請查閱 外掛程式文件 的範例。
升級方式
在程式碼庫執行遷移工具,尋找使用了 store. on
,store.off
,store.emit
的例子。
「中間件取代
中間件被替換為插件。外掛程式是接收 store 作為僅有參數的基本函數,能夠監聽 store 中的 mutation 事件:
const myPlugins = store => { store.subscribe('mutation', (mutation, state) => { // Do something... }) }
更多詳情,請參考 外掛程式文件。
升級方式
在程式碼庫執行遷移工具,尋找使用了 middlewares
選項的例子。