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

这篇具有很好参考价值的文章主要介绍了vue3,vite开发, 动态引入组件,同时动态设置组件的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-729818.html

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

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

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

相关文章

  • vue3 动态加载组件、动态引入组件

    1.问题 在做一个用 vite 构建的 vue3 项目时,动态拉取导入 .vue 页面,然后控制台一直有以下提示,页面也无法渲染出来。 2.分析 根据上面的报错提示,让我们安装并使用: @rollup/plugin-dynamic-import-vars 这个插件(最终没有这个方案)。 Vite官方文档说 需要使用Glob 导入形式 ,然

    2023年04月09日
    浏览(70)
  • Vue3 - vite 引入本地图片方法,页面引入本地静态资源图像详细教程,解决 UI 前端组件库的图片属性无法使用本地图像问题(无论是本地开发还是打包部署,本地图片的路径正常可用)

    在 webpack 中通常用 require() 来引入静态图片,但在 vite 中这种方法就不行了。 本文实现了 在 vue3+vite 项目开发中,实现引入本地图片(静态资源),并且 build 打包后依然正常运行, 支持普通 img 标签使用,也支持 UI 组件库的各种 “图片属性” 当参数进行使用。 如下图所示

    2024年02月08日
    浏览(41)
  • VITE+VUE3动态导入组件

    通常的动态组件导入方式   vue中又是时候我们会使用到动态组件导入,比如路由组件的动态导入,一般类似路由组件的动态导入的方式: ()=import(path); ()=defineAsyncComponent(()=import(path)) vite中使用的错误 但是这写方式进行动态导入组件的时候在vite+vue3项目下都是不行的,开发

    2024年02月14日
    浏览(26)
  • Vue3 —— 在vue中动态引入组件以及动态引入js的方法

    文章目录 一 、 动态引入组件 1. 具体写法 二、 动态引入js文件 1. 具体写法 总结 定义一个异步组件,它在运行时是懒加载的。参数可以是一个异步加载函数,或是对加载行为进行更具体定制的一个选项对象。 在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时

    2024年02月12日
    浏览(32)
  • uniapp+vue3+vite+ts搭建项目引入uni-ui和uviewPlus组件库

    一、创建项目架构 首先使用官方提供的脚手架创建一个项目 在这里插入代码片 ,这里我创建的 vue3 + vite + ts 的项目: (如命令行创建失败,请直接访问 gitee下载模板) 二、下载依赖 启动 三、下载安装包 引入uni-ui src/package.json 文件配置easycom模式 引入uview-plus main.ts配置 u

    2024年02月13日
    浏览(39)
  • Vite4+Pinia2+vue-router4+ElmentPlus搭建Vue3项目(组件、图标等按需引入)[保姆级]

    本文为快速搭建vite4项目,一些插件的详情就不做过多的解释,都放有官网链接,需要深入了解的小伙伴可自行查看。至于为什么选择使用vite,因为它具备着快速启动、按需编译、模块热更新的亮点。归根结底最大的特点就是 快 。vue的创始人是尤雨溪大佬,vite也是他。所以

    2023年04月19日
    浏览(35)
  • Vite + Vue3 +Vant4构建项目时,按需引入使用Toast组件,引用 showToast 时出现编译报错的解决方案

    一.问题定位 在Vite + Vue3 +Vant4构建项目时,需要使用Toast组件显示提示信息,按照官方文档使用函数调用 使用后直接报错,说是找不到对应的样式文件(如下图): 在项目中查找node-moudles文件,确实没有找到,只有一个toast文件(如下图): 在百度搜索解决方法,说是需要单

    2024年01月17日
    浏览(44)
  • Vue3+TS+Vite开发组件库并发布到npm

    Vue2开发插件并发布到npm 使用VitePress静态网站生成器创建组件库文档网站并部署到GitHub 目标:创建 vue-amazing-ui 组件库 ,并发布到npm 该组件库已发布到 npm,直接安装即可使用: Vue Amazing UI 在线预览 目前拥有的 Components 组件: Component name Descriptions Component name Descriptions Alert 警

    2024年02月08日
    浏览(38)
  • Cesium引入vite + vue3

    卸载命令 使用 vite.config.js 组件使用 加载高德地图 高德地图的加载方便很多,并不需要申请key,可以直接加载到我们的Cesium中。 加载ArcGISMap地图

    2024年02月14日
    浏览(22)
  • vite 引入局部组件 必须带.vue

    11:03:47 AM [vite] Internal server error: Failed to resolve import “./components/layoutsHeader” from “src/views/layouts/layouts.vue”. Does the file exist? 在这里插入图片描述

    2024年02月17日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包