vue3,动态引入组件,同时动态设置组件的name,用于keep-alive缓存

这篇具有很好参考价值的文章主要介绍了vue3,动态引入组件,同时动态设置组件的name,用于keep-alive缓存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果有两个页面逻辑大都相同,咱们想到的第一个肯定是写一个组件,然后两个路由都指向这个组件。
那如果现在多添加一个需求:两个页面在切换路由时都需要缓存数据,并且两个页面的缓存数据要求独立。
这个需求很简单:在router-view外层包裹一个keep-alive组件,指定缓存名称即可。

OK,有了需求,问题出现:
因为keep-alive是根据组件的name来指定缓存策略的,两个路由用的同一个component,他们的name是相同的,这样导致两个页面的数据不能独立缓存,他们会共用缓存数据

so,咱们有了又有了新的想法:能否动态的设置component的name,引用同一个组件设置不同的name。
相信这也是大家能搜到我这篇文章的原因,嘿嘿。

答案肯定的


//生产打包,需要vite引入模块
const viewsComponent = import.meta.glob('/src/views/**/*.vue')
//实际的组件路径
const componentPath= '/src/views/test.vue'
//自定义组件name
const componentName = 'woshipipixia'
//构造动态路由
const dynamicRoute = {
  name: 'test',
  path: 'test',
  component: () => {
    //根据组件路径动态获取组件实例
    const component = viewsComponent[componentPath]
    if (!component) throw new Error(`${componentPath} 组件文件不存在!`)
    //重新构造组件,调整组件name
    return component().then(comp => ({
      ...comp.default,
      name: componentName,
    }))
  }
}
//添加路由
router.addRoute(dynamicRoute)

这样的组件name会被设置为woshipipixia,咱们就可以用这个name 在keep-alive缓存文章来源地址https://www.toymoban.com/news/detail-620446.html

到了这里,关于vue3,动态引入组件,同时动态设置组件的name,用于keep-alive缓存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Vue3】keep-alive 缓存组件

    当在 Vue.js 中使用 keep-alive 组件时,它将会缓存动态组件,而不是每次渲染都销毁和重新创建它们。这对于需要在组件间快速切换并且保持组件状态的情况非常有用。 keep-alive 只能包含(或者说只能渲染)一个子组件,如果需要包含多个子组件,需要用 v-if 选择某个确定的组

    2024年02月13日
    浏览(29)
  • keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化

    目录 keep-alive  使用 keep-alive 的示例代码: 手动清除组件缓存的示例代码: keep-alive 组件有以下几个优点: keep-alive 的原理: 使用 keep-alive 组件,你可以包裹需要缓存的组件,然后这些组件在切换时将会被缓存起来,而不是每次都重新创建。 使用 keep-alive 的示例代码: 我们

    2024年02月08日
    浏览(28)
  • Vue3 中引入液晶数字字体(通常用于大屏设计)

    下载液晶字体 DS-Digital.ttf ‼️注意:本项目使用的是 vue-cli 搭建的基础框架, webpack.base.conf.js 配置文件中已经配置好了,直接如上步骤使用即可,若是其他框架则需要检查一下 webpack.base.conf.js 配置文件中以下配置是否包括 ttf 格式。

    2024年02月11日
    浏览(25)
  • Vue使用keep-alive设置哪些组件可以被缓存,哪些不被缓存

    需求:当一个项目中,不是所有的组件页面都需要缓存起来,因为有些页面是不需要的    $route.meta.keepAlive 判断当前组件是否有keepAlive属性 在路由js文件中在配置路由规则的时候配置  

    2024年02月16日
    浏览(30)
  • Vue3中的组件的name名

    1、vue2中的组件名 我们学过Vue2同学们应该知道,在Vue2中我们的每个组件都有自己的一个name名。 作用:在Vue2中,name属性用来给组件命名,方便在开发者工具的调试时追踪组件层级 2、Vue3中的组件名 随着Vue3慢慢的替代Vue2,Vue3语法根Vue2的语法有很大的改变。 在公司中,也有

    2024年02月02日
    浏览(26)
  • Element table组件动态设置expand展开项以及同时只展开一项

    场景一 :table表格展开项过多,界面数据太繁杂影响查看。 场景二 :Element Table加载的数据发生变化时,会重新渲染界面,之前的展开项会自动关闭,用户需要手动去打开展开项,频繁的手动操作会极大的影响客户体验。 Element Table 是一个基于 Element UI 的表格组件。要设置

    2024年02月11日
    浏览(17)
  • vue3+ts+vite项目引入echarts,vue3项目echarts组件封装

    技术栈 :Vue3 + Ts + Vite + Echarts 简介 : 图文详解,教你如何在 Vue3 项目中 引入Echarts , 封装Echarts组件 ,并实现常用Echarts图例 1.1 静态效果 1.2 动态效果 2.1 安装 Echarts npm: pnpm: 2.2 main.ts 中引入 2.3 Echarts 组件封装 /src/components/ReEcharts/index.vue 文件中写入如下代码 3.1 柱状图 实现

    2024年02月09日
    浏览(43)
  • 从0搭建Vue3组件库(十三):引入Husky规范git提交

    虽然我们项目中引入了 prettier 和 eslint 对代码格式进行了校验,但是多人开发的时候难免依然会有人提交不符合规范的代码到仓库中,如果我们拉取到这种代码还得慢慢对其进行修改,这是一件很麻烦的事情,同时也为了避免团队成员提交五花八门message,因此我们可以引入 husky 来从

    2024年02月07日
    浏览(41)
  • 搭建vue3项目+按需引入element-ui框架组件

    场景 :使用vue create脚手架快速搭建vue的项目 前提 :需要安装node.js和cnpm以及yarn 并且cnpm需要设置为淘宝镜像,cnpm和yarn安装教程网上很多可以自行搜索 查看安装的版本(显示版本号说明安装成功) 1.cmd窗口跳到需要新建项目的文件夹下,使用vue create 2.我这里选择第三个Ma

    2024年02月16日
    浏览(42)
  • vue3+ant design vue+ts实战【ant-design-vue组件库引入】

    🔥🔥更多内容见Ant Design Vue官方文档 🔥点击复习vue3【watch检测/监听】相关内容 👏👏👏一个好项目的编写不仅需要完美的逻辑,以及相应的技术,同时也需要一个 设计规范的高质量UI组件库 。👏👏👏本期文章将会详细讲解 Ant Design of Vue 组件库的 安装、使用、引入 。

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包