在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 如何看待vue2修改data的值后把模板全部都刷新了一遍?

如何看待vue2修改data的值后把模板全部都刷新了一遍?

例子可以參考:
https://jsfiddle.net/k6f32hsv/

在上面例子中可以看到,當(dāng)修改了data中一個數(shù)據(jù)的值,vue把模板全部重新渲染了,而不是被修改數(shù)據(jù)對應(yīng)模板的那一塊。

現(xiàn)在項目中有個問題就是使用vuex,需要頻繁修改數(shù)據(jù),如onmousemove事件中。
那么頁面中的其它組件檢測到vuex數(shù)據(jù)改變,也會重新刷新一遍模板。導(dǎo)致性能浪費。
特別在onmousemove事件中。頻繁刷新是否一件好事?

回答
編輯回答
安若晴

計算屬性computed 了解一下

為什么method每次都會調(diào)用呢?考慮

method: {
  showRandom() {
    return Math.random();
  },
  showConstant() {
    return 42;
  }
}

需要刷新視圖的時候,我們是應(yīng)該調(diào)用method呢,還是不應(yīng)該呢?Vue不可能知道函數(shù)返回值會不會變,為了避免出錯,只能全都調(diào)用。

但是這樣確實浪費了性能,computed就是用來解決這個問題的。computed相當(dāng)于顯式地告訴Vue,只要依賴項沒變,函數(shù)返回值就不會變,就不需要刷新。這樣的話,只修改data中一個數(shù)據(jù)的值,其他部分不會刷新。

具體到題主的情況,vuex提供mapState,可以用來取代上面的show函數(shù),填到計算屬性里面就可以了。mapState 輔助函數(shù)

2017年1月22日 22:14