本文小编为大家详细介绍“vue中this.$refs.tabs.refreshs()刷新组件的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue中this.$refs.tabs.refreshs()刷新组件的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
当更改了用户信息后,需要刷新页面或者组件。
定义一个请求用户信息的方法,在需要时调用:
sessionStorage.setItem(‘userInfo‘,JSON.stringify(this.userInfo)); //从session缓存中获取
子组件某个需要的地方:
this.$emit(‘refresh‘);
父组件:
methods:{
refresh() {
this.userInfo = JSON.parse(sessionStorage.getItem(‘userInfo‘));
}
},
父组件:
<template>
<top-bar ref="tabs"/> //需要刷新的组件(非关系组件)
</template>
methods:{
refresh() {
this.$refs.tabs.refreshs(); //刷新子组件 ,top-bar是vue组件实例的名字 ,tabs时引用的名字,refreshs是Vue自带的方法
}
},
方法:利用v-if控制router-view,在根组件APP.vue中实现一个刷新方法
<template>
<router-view v-if="isRouterAlive"/> //路由的组件
</template>
<script>
export default {
data () {
return {
isRouterAlive: true
}
},
methods: {
reload () {
this.isRouterAlive = false
this.$nextTick(() => (this.isRouterAlive = true))
}
}
}
</script>
然后其它任何想刷新自己的路由页面,都可以这样:
this.reload()
公用内容动态改变了全局参数,要求切换后刷新当前组件所有请求,或重新加载当前组件。
因为我们在项目中加入了vue-routerapp.vue,就可以通过控制router-view去达到我们需求的效果。
同时也要用到 provide/inject,个人列表类似vuex的辅助函数,跨越层级关系引入(注入)你的某个方法。
app.Vue
<template>
<div id="app" v-loading.fullscreen.lock="fullscreenLoading" element-loading-spinner="rybloading" element-loading-text="正在请求数据" element-loading-background="rgba(0, 0, 0, 0.6)">
<router-view v-if="isRouterAlive"></router-view>
</div>
</template>
<script>
export default {
name: 'app',
provide() {
return {
reload: this.reload
}
},
data() {
return {
isRouterAlive: true
}
},
methods: {
reload() {
this.isRouterAlive = false
this.$nextTick(function() {
this.isRouterAlive = true
})
}
}
}
</script>
<style lang="scss">
</style>
然后在你修改全局参数的组件中加入
data(){
return{
}
},
inject:['reload'], // 在这个组件中注入这个方法
//...事件中调用
methods:{
changed(){
this.reload() //调用
}
}
读到这里,这篇“vue中this.$refs.tabs.refreshs()刷新组件的方法”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。