vue强制刷新子组件
把一个组件重置到初始状态是一个常见的需求,推荐的做法有两种:一种是父组件重置子组件的 prop,另一种是子组件暴露一个重置的方法供父组件调用。
但有些时候,子组件既没有提供重置的方法,也没提供 prop 来重置自己的状态。更重要的是,这个子组件我们还动不了。于是我们就需要一种 hack 的方式来强制子组件重置到初始状态。
方法如下:
//原理就是:采用v-if会销毁组件并且重绘,这样就会重载组件
// 子组件:自己封装的组件
<IncomeStatistics v-if="hackReset == true"></IncomeStatistics>
// 然后再父组件内的增删改查方法中操作,就好了
this.hackReset = false;
// 然后你的方法成功后
// vue 实现响应式并不是数据发生变化之后 dom 立即变化,而是按一定的策略进行 DOM 的更新。
// 在vue的深入响应式原理中有解释:
// $nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM
this.$nextTick(() => {
this.hackReset = true;
});
//这样的话就会完成强制刷新v-if 在切换时,元素及它的绑定数据和组件都会被销毁并重建
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!