近日在对一个用Vue2开发的老项目进行功能开发的时候遇到如下问题:
告警指标的数据是通过接口请求得到的,在选择完数据来源之后就会触发函数去请求得到对应的指标数据。
但是选择完后无显示数据,但是查看接口是存在返回值的,没有问题。也对列表值进行了打印,也没有问题。那么就是页面没有渲染对应的数据。
此时点击添加规则或者加号,就会新增一条配置,此时数据就出现了
破案了家人们,还是一个常见的问题。数据发生了变化,但是页面还没有刷新,所以无法看到数据。之后新增配置项,dom发生了变化,就会触发回流导致重新渲染,此时新的数据就会被渲染出来。
这个问题的根本产生原因就是因为Vue的响应式系统特性导致的。Vue使用异步更新DOM的策略来提高性能,即数据变化时并不会立即更新DOM,而是等待当前代码块执行完毕后才会进行DOM更新。
所以我们需要强制更新DOM,利用导致回流的机制即可,通过获取DOM元素的offsetTop、offsetLeft、offsetWidth、offsetHeight等属性
也可以调用this.$forceUpdate()
来手动强制Vue实例重新渲染,从而更新页面。