獲取 vuex state 中的值一定要使用 computed 而不能使用 data 嗎?
data 中的內容只會在 created 鈎子觸發前初始化一次,類似於你直接寫 const data = { foo: 123 } 這樣,這時屬性的值是純粹的字面量。
JS 字面量賦值后顯然不會自動更新。最簡單的例子:
let b = 'xxx' let a = b b = 'xyz' // 這時對於原始類型,a 肯定還是 'xxx'
換句話說,data 中內容依賴變更時,data 屬性不會變更(它的設計目標就是保存組件的局部狀態數據而已)。
而 computed 則是通過【依賴追蹤】實現的,在 computed 求值時引用的 Vue 變量變化時,會觸發對 computed 的重新計算。
所以你可以使用 computed 去引用 Vuex 狀態變量,從而使得依賴追蹤生效。
或者,將 Vuex 狀態變量通過 mapStateToComputed 映射為 computed 也是一個很方便的選擇。