需要:强制 Vue 重新渲染组件
1.使用Vue的内置$forceUpdate方法
vue 官方 forceUpdate
$forceUpdate : 一般由于一些嵌套特别深的数据,导致数据更新了,但是页面却没有重新渲染
需要使用this.$forceUpdate()
迫使 Vue 实例重新渲染。
可参考 forceUpdate_forceupdate无效_w1939459的博客-CSDN博客
(项目中用了但是没效果,采用的修改key值)
2.在组件上进行 key 更改
- key在Vue是DOM对象的标识;
- 进行列表展示时,默认key是index;
- 如果数据只做展示使用,使用index作为key是没有任何问题的;
- 如果使用index作为key,而后续操作会破坏顺序,一定会带来效率问题,严重时会渲染出错误的DOM
给出一组数据,Vue要把这些数据渲染到页面上,首先要生成【虚拟DOM】,然后根据【虚拟DOM】去生成【真实的DOM】。如果数据发生了改变,Vue会生成【新的虚拟DOM】,注意,这个【新的虚拟DOM】并不会直接生成【新的真实DOM】,否则虚拟DOM一点用处也没有了。Vue的操作是,拿根据新的数据生成的【新的虚拟DOM】与之前的【真实的DOM】去做比较,如果相同,直接延用即可(“拿来主义”);如果不同,则生成新的DOM对象。
在这个过程中key扮演了很重要的角色。
本文参考 vue强制组件重新渲染_51CTO博客_vue重新渲染组件