Vue 重置组件到初始状态的方法示例
程序员文章站
2022-06-23 23:05:59
vue
通过直接强制刷新 dom 来达到重置组件的效果,这样可以重置一些组件的动画以及组件内初始的数据
强制重新生成 dom 的实现
原理:强制重新生成 do...
vue
通过直接强制刷新 dom 来达到重置组件的效果,这样可以重置一些组件的动画以及组件内初始的数据
强制重新生成 dom 的实现
原理:强制重新生成 dom 可以通过 vue 中的 key 来实现。在 vue 更新 dom 时,如果 key 值相同则会对原有组件进行复用,如果不同,则会重新生成。
代码示例:
每次点击 refresh 按钮,demo 组件都会重新生成
组件:
/** * demo.vue */ <template> <div>demo</div> </template> <script> export default { data () { return {} }, created: function () { console.log('created') } } </script>
主页面:
/** * index.vue */ <template> <div> <demo :key="id"></demo> <button @click="refresh">refresh</button> </div> </template> <script> import demo from './demo' export default { data () { return { id: +new date() } }, methods: { refresh: function () { this.id = +new date() } }, components: { demo } } </script>
注:
对 +new date() 的说明:
4 个结果一样,都是返回当前时间的毫秒数
alert(+new date())
alert(+new date)
var a=new date()
alert(a.valueof())
alert(a.gettime())
补充:vue强制刷新组件
把一个组件重置到初始状态是一个常见的需求,推荐的做法有两种,一种是父组件重置子组件的 prop,另一种是子组件暴露一个重置的方法供父组件调用。但有些时候,子组件既没有提供重置的方法,也没提供 prop 来重置自己的状态。更重要的是,这个子组件我们还动不了。于是我们就需要一种 hack 的方式来强制子组件重置到初始状态。方法如下:
<component v-if="hackreset"></component> this.hackreset = false this.$nexttick(() => { this.hackreset = true })
v-if 在切换时,元素及它的绑定数据和组件都会被销毁并重建
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 简述浏览器端的九大缓存
下一篇: socket传送文件格式的问题