tab切换vue中created方法执行两次
问题描述
element-admin
中使用tab
切换到不同的路由,发现每次切换tab路由都会执行两次生命周期
<tabs
:tabs="tabs"
v-model="activeName"
@on-switch="handleSwitch"
>
<components :is="activeName"></components>
</tabs>
问题分析
Vue
官网上提供了一个动态组件 <component :is="currentTabComponent">
,可以使用is动态切换组件,切换组件后组件会立即开始一个生命周期,然后路由跟着变化了,路由变化后又引发了页面重新渲染,所以会出现created中的方法执行两次的问题。解决方法就是将动态组件放到一个<router-view>
组件中,这样切换tab后就根据匹配的路由渲染页面了。
问题解决
使用<router-view>
将动态组件包起来,这样每次切换都重新渲染一次。
<tabs
:tabs="tabs"
v-model="activeName"
@on-switch="handleSwitch"
>
<router-view>
<components :is="activeName"></components>
</router-view>
</tabs>
备注
<router-view>
组件是一个 functional 组件,渲染路径匹配到的视图组件。<router-view>
渲染的组件还可以内嵌自己的 <router-view>
,根据嵌套路径,渲染嵌套组件。
因为它也是个组件,所以可以配合 <transition>
和 <keep-alive>
使用。如果两个结合一起用,要确保在内层使用 <keep-alive>
<transition>
<keep-alive>
<router-view></router-view>
</keep-alive>
</transition>
分类:
vue
, element ui
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2020-08-19 字符串首字母大写的小技巧