前言:
在开发的过程中,我们有时候会遇到这样的情况,通过动态赋值,但是dom没有及时更新,我们可以得到动态赋值,但是却得不到双向绑定的dom节点,这就需要我们手动强制刷新组件。
官网这样说:
可能你不太懂,请继续往下看。这里有一个我的例子来详细解释这个方法的使用。
第一个打印结果
第二次打印结果
一、问题描述:父组件通过v-for渲染子组件,删除子组件数据时出现异常。
Code class=' language-plain '第五节-if='是标志'标志卡/标志卡/第二节/code ii '中刷新' v-for='(标志,索引)。问题原因:异常数据不是响应依赖,而是从vuex读取的。通过测试发现,父组件删除了数据,但没有重新创建子组件,子组件怀疑异常的数据就是读缓存副本。
三、问题解决:根据v-if改变dom结构的特性,手动重新创建子组件。
1.设置数据变量isrefresh=true
2.初始v-if=isrefresh
3.删除时,配合$nextTick()DOM呈现回调函数重新创建子组件
/************************************************************************************************************************************/
PS: Vue强制刷新子组件
将组件重置为其初始状态是常见的要求。有两种推荐的方法,一种是父组件重置子组件的prop,另一种是子组件公开一个重置方法供父组件调用。然而,有时子组件既没有提供重置方法,也没有提供重置自身状态的工具。更重要的是,我们不能移动这个子组件。因此,我们需要一种黑客方法来强制子组件重置为原始状态。方法如下:
//原理是使用v-if会破坏组件并重新绘制。这将重载组件//子组件:自封装组件incomestatistics v-if=' destroyincomestatistics==true ' ref=' incomestatistics child '/incomestatistics//,然后在父组件中的add、delete和check方法中进行操作,就可以了。这个。destroyincomestatistics=false//然后,在你的方法成功之后,//Vue的实现响应并不是在数据发生变化后立即改变DOM,而是按照一定的策略更新DOM。//在vue的深度响应原理中有解释://$nextTick是在下一个DOM更新周期结束后执行延迟回调。如果您在修改数据后使用$nextTick,您可以在今年获得更新的DOM。$ nexttick (()={this。destroyincomestatistics=true});//在这种情况下,强制刷新将完成。以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。