第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Vuex中執(zhí)行完mutations,更新了state后,視圖不更新

Vuex中執(zhí)行完mutations,更新了state后,視圖不更新

UYOU 2018-12-20 22:18:27
先說需求:很簡單,就是一個 ProductList.vue 組件顯示商品信息列表遇到的問題:在使用 Vuex 對其狀態(tài)管理時,更改了 state 中的 products 值之后,視圖不更新。我的代碼如下先看 store.js然后,我在 ProductList.vue 中是這樣寫的這里代碼簡化了很多。程序運行的結(jié)果是: template 中的 products 的值為 []然后,我在 store.js 中使用了 getters 對象,代碼這樣寫:相應的改變 ProductList.vue 中 computed,代碼如下:然后,就能正常的顯示 products。那么我的問題就是:在未使用 getters時,mutations 執(zhí)行之后,改變了 products 的值,那么相應的在 computed 中是不是也應該發(fā)生了改變呢?那么為什么視圖上不更新呢?Vuex 中的 Getters 在官方文檔中的描述意思大概是 state 中一些派生的狀態(tài),可理解為 Vue 中的 computed。 想問這里的state中的 products 和 getters 中的 allProducts 表達的是同一個內(nèi)容,沒有體現(xiàn)出派生狀態(tài)的意思啊?想問就是如何更好的理解 getters和computed?computed 計算屬性,原數(shù)據(jù) 發(fā)生改變時,派生數(shù)據(jù)同步更新,但是這里只是獲取 state 中的 products,為什么要使用 getters 才可以呢?問題有點多,新手一枚,望人帥心善的程序員兄弟們多多指教,感激不盡。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經(jīng)驗 獲得超7個贊

先寫下發(fā)現(xiàn)的問題吧

computed是可以依賴vuex中數(shù)據(jù)并獲取數(shù)據(jù)的。


return this.$store.state.products改為return this.$store.state.products.products就可以了。


至于為什么多了一層。是因為modules,分了模塊的會將模塊內(nèi)的state放在state[模塊名]這個對象里


const store = new Vuex.Store({

  modules: {

    a: moduleA,

    b: moduleB

  }

})

store.state.a // -> moduleA 的狀態(tài)

store.state.b // -> moduleB 的狀態(tài)

可以看到。moduleA的狀態(tài)全在store.state.a這個對象中。


你的問題

為什么沒更新,因為獲取到的是一個對象。{products:[]},沒有title等屬性,無法渲染,當然直接輸出{{product}}還是能看到更新后的數(shù)據(jù)的。


為什么使用了getters就可以正確獲取state了呢,因為getters默認獲取的是同modules內(nèi)的數(shù)據(jù)。


那我估計你對派生的理解也沒有疑問了。好比computed的作用,我們用watch和methods配合state也可以做到,為什么要用computed?因為使用computed有明確的依賴關系。


查看完整回答
反對 回復 2019-01-10
  • 1 回答
  • 0 關注
  • 5987 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號