Vue隨筆(二)this.$nextick和deepclone原理
阿新 • • 發佈:2020-10-12
(一)this.$nextick的使用
1、Vue宣告週期的created() 鉤子函式進行的DOM操作一定要放在Vue.nextTick() 的回撥函式中,因為created() 執行的時候DOM實際上並未進行任何渲染,此時進行DOM操作無異於徒勞,所以此處一定要將DOM操作的js程式碼放進Vue.nextTick()的回撥函式中。
與之對應的就是mounted 鉤子函式,因為該函式執行時所有的DOM掛載和渲染都已完成,此時再鉤子函式中進行任何DOM操作都不會有問題。
2、在資料變化後要執行的某個操作,當你設定 vm.someData = ‘new value’,DOM並不會馬上更新,而是在非同步佇列被清除,也就是下一個事件迴圈開始時執行更新時才會進行必要的DOM更新。如果此時你想要根據更新的 DOM 狀態去做某些事情,就會出現問題。為了在資料變化之後等待 Vue 完成更新 DOM ,可以在資料變化之後立即使用 Vue.nextTick(callback) 。這樣回撥函式在 DOM 更新完成後就會呼叫。
(二)深拷貝(deepClone)
淺拷貝:可以理解為只操作一個共同的記憶體區域。
深拷貝:對物件內部的引用均複製,是建立一個新的例項,並複製例項。
簡而言之:是否複製了子物件。修改了克隆後的物件的屬性值,影響到原物件-淺拷貝;不影響叫深拷貝。
(三)Echart雙y軸實現左右刻度線一致
實現的思路為:
算出每組資料的最大值,將每組資料分割為相同的段數