首页 > 其他分享 >vue3 使用 setup 语法糖时,keep-alive 缓存使用 include / exclude 获取组件名

vue3 使用 setup 语法糖时,keep-alive 缓存使用 include / exclude 获取组件名

时间:2023-08-24 15:44:04浏览次数:45  
标签:vue extend plugin setup alive vue3 组件 vite

<template>
  <router-view v-slot="{ Component, route }">
    <keep-alive :include="['ComponentName']">
      <component :is="Component" :key="route.name" />
    </keep-alive>
  </router-view>
</template>

vue3 使用 keep-alive 缓存页面时,如果需要使用 include / exclude 参数,那么就要用到组件名称。如果用 setup 语法糖书写时无法直接获取组件名,此时想要设置组件 name 的话有如下方法:

1. 多写一个script标签,并设置组件名:

<script>
export default {
  name: "ComponentName",
}
</script>

2. 通过插件扩展:

vite-plugin-vue-setup-extend

安装插件:

yarn add vite-plugin-vue-setup-extend -D

npm i vite-plugin-vue-setup-extend -D

使用插件:
先引入

import { defineConfig, Plugin } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueSetupExtend from 'vite-plugin-vue-setup-extend'

export default defineConfig({
  plugins: [vue(), vueSetupExtend()],
})

然后便可以设置name属性

<template>
  <div>hello world {{ a }}</div>
</template>
<script lang="ts" setup name="ComponentName">
  const a = 1
</script>

标签:vue,extend,plugin,setup,alive,vue3,组件,vite
From: https://www.cnblogs.com/lpkshuai/p/17654287.html

相关文章

  • vue3 报错:husky - pre-commit hook exited with code 1 (error)
    问题:git提交不上去解决方法:   "format":"prettier--write\"./**/*.{html,vue,ts,js,json,md}\"",......
  • Vue3 中 keepAlive 如何搭配 VueRouter 来更自由的控制页面的状态缓存?
    在vue中,默认情况下,一个组件实例在被替换掉后会被销毁。这会导致它丢失其中所有已变化的状态——当这个组件再一次被显示时,会创建一个只带有初始状态的新实例。但是vue提供了keep-alive组件,它可以将一个动态组件包装起来从而实现组件切换时候保留其状态。本篇文章要介绍的......
  • Vite + Vue3 + Element-Plus
    搭建Vite项目注意Vite需要 Node.js 版本14.18+,16+。然而,有些模板需要依赖更高的Node版本才能正常运行,当你的包管理器发出警告时,请注意升级你的Node版本。使用NPM: npmcreatevite@latest使用Yarn:yarncreatevite使用PNPM:pnpmcreatevite输入项......
  • vue3 用vite创建项目
    1.第一步运行创建命令(npm)npmcreatevite@latest注意的地方:首次创建的时候会出现这个 直接y就行了Needtoinstallthefollowingpackages:create-vite@latestOktoproceed?(y)直接y就行了2.第二步创建项目名称?Projectname:»vue3-demo3.第三步找到vue即可(下边有......
  • 安装vue3+vite报错
    报错:‘D:\Program‘不是内部或外部命令,也不是可运行的程序;我已经配置过环境变量,发现是node安装目录D:\ProgramFiles\nodejs,中间有空格导致,只能改变nodejs位置1.把nodejs整个剪切出来放在d盘根目录下面2.修改node的全局环境npmconfigsetcache"D:\nodejs\node_cache......
  • vue3 和 react18 对比
    Vue3和React18是目前最新的版本,它们都是非常受欢迎的前端框架。下面是对Vue3和React18进行深度对比的一些关键点:组件模型:Vue3:Vue3采用了基于函数的组件模型,即使用setup函数来定义组件逻辑。这种方式更加直观和灵活,允许开发人员以更简洁的方式编写组件。React18:React18仍然......
  • vue3 使用 router 进行跳转备忘
    1.在画面中添加子画面,使用el-menu菜单进行跳转,只更新子画面a.首先在配置router路径的js文件中配置画面的路径,子画面的路径要在父画面的children下面 在父节点下设置redirect属性,打开父画面时会默认打开相应子画面,否则子画面默认显示为空白 b.在画面显示区域添加......
  • 记录一个通过keep-alive缓存组件不生效的问题
    项目中通过菜单管理配置页面进行缓存,layout组件中通过keep-alive的include属性进行命中官方描述:匹配首先检查组件自身的name选项,如果name选项不可用,则匹配它的局部注册名称(父组件components选项的键值)。匿名组件不能被匹配。通过检查发现配置菜单时用的组件名称(动态菜......
  • 【算法】在vue3的ts代码中分组group聚合源数据列表
    有一个IList<any>()对象列表,示例数据为[{id:'1',fieldName:'field1',value:'1'},{id:'1',fieldName:'field2',value:'2'},{id:'2',fieldName:'field1',value:'1'},{id:'2',......
  • vue3父子组件通信小结
    父子组件中的attrsprops理解/继承首先,父组件可以给子组件传入属性、监听函数(类似onClick),class,style,id,总结起来就是大三类-属性,监听函数,样式!爷爷组件--有两个监听函数import{computed,defineComponent,reactive,ref}from"vue";import{css}from"@emotion/css"......