vue 重新加载组件 较友好方法

编程入门 行业动态 更新时间:2024-10-15 00:19:37

使用v-if控制router-view的显示或隐藏(v-if会把事件监听器和自组件适当的销毁或者重建)
使用provide / inject组合解决自组件层级比较深的问题
使用this.$nextTick()实现页面异步刷新

provide / inject
就是父组件中使用provide提供变量(对象或者是一个函数),在子组件中通过inject来注入变量
不管层级有多深,并在起上下游关系成立的时间始终生效

this.$nextTick()
当dom发生变化,更新后执行的回调

实际代码:
在App.vue里面,声明reload方法,然后通过provide把reload方法注入,使用bol值控制router-view隐藏(销毁),再通过this.$nextTick()在dom更新之后利用bol控制router-view重新加载,实现页面刷新的效果

<template><div id="app"><router-view v-if="isRouterShow"/></div>
</template>
<script>
export default {name: 'App',provide () {return {reload: this.reload}},data () {return {isRouterShow: true}},methods: {async reload () {this.isRouterShow = falseawait this.$nextTick()this.isRouterShow = true}}
}
</script>

在子组件里面
使用inject注入App.vue提供的reload依赖,然后在需要的地方直接调用this.reload()方法即可

export default {inject: ['reload'],methods: () {reloadFun () {this.reload()}}}
1

Vue提倡数据驱动dom,但是存在特殊情况,如果有更好的解决方法,请多多指教!

更多推荐

组件,友好,加载,方法,vue

本文发布于:2023-05-29 03:34:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/335822.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组件   友好   加载   方法   vue

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!