Vue随笔(二)this.$nextick和deepclone原理
(一)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 更新完成后就会调用。
作用:作用是一次性更改数据,并且渲染DOM
(二)深拷贝(deepClone)
浅拷贝:可以理解为只操作一个共同的内存区域。
深拷贝:对对象内部的引用均复制,是创建一个新的实例,并复制实例。
简而言之:是否复制了子对象。修改了克隆后的对象的属性值,影响到原对象-浅拷贝;不影响叫深拷贝。
(三)Echart双y轴实现左右刻度线一致
实现的思路为:
算出每组数据的最大值,将每组数据分割为相同的段数