首页 > 其他分享 >【vue3】vue3.5

【vue3】vue3.5

时间:2024-09-19 17:23:58浏览次数:12  
标签:count const watch value vue3.5 vue3 组件 ref

vue3.5是9.1发布的,还挺热乎的,赶快学习起来!!!

组件属性结构解析赋值

组件属性结构解析赋值,高度提高开发体验,这个特性曾经在vue3.3提出过,然后3.4废弃,终于3.5稳定了。下面一起来看看怎么用的吧。

<script setup lang="ts">
  import { watch } from 'vue';

  // 自定义属性结构解析,可在结构解析时赋默认值
  const { count = 0, name = '张三' } = defineProps<{
    count: number;
    name: string;
  }>();

  // 监听自定义属性改变
  watch(
    () => count,
    (value) => {
      console.log('count', value);
    }
  );
</script>

<template>
  <div>{{ count }}</div>
  <div>{{ name }}</div>
</template>

内置组件teleport优化

Teleport 可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去,但有一个局限,传送元素只能在目标元素后面,vue3.5给 Teleport 加了一个defer属性,可以忽略这个顺序。

<template>
  // 这里'传送'成功
  <div id="box1"></div>
  <teleport to="#box1">
    <div>我系渣渣辉box1</div>
  </teleport>
  <teleport to="#box2">
    <div>我系渣渣辉box2</div>
  </teleport>
  // 这里'传送'失败
  <div id="box2"></div>
  <Teleport defer to="#box3">
    <div>我系渣渣辉box3</div>
  </Teleport>
  // 这里'传送'成功
  <div id="box3"></div>
</template>

useTemplateRef

返回一个浅层 ref,其值将与模板中的具有匹配 ref attribute 的元素或组件同步。

<script setup lang="ts">
  import { ref, useTemplateRef } from 'vue';
  import Comp from './Comp.vue';

  // before
  const domDiv = ref<HTMLDivElement>();
  // after
  const div = useTemplateRef('domDiv');
  const divInnerText = () => {
    div.value!.innerText = '张三6666';
  };

  // before
  // const comp = ref<HTMLDivElement>();
  // after
  const useTComp = useTemplateRef<{
    addNum: () => void;
  }>('comp');

  const addCompNum = () => {
    useTComp.value!.addNum();
    // comp.value.addNum();
  };
</script>

<template>
  <div ref="domDiv"></div>
  <button @click="divInnerText">innerText</button>
  <Comp ref="comp"></Comp>
  <button @click="addCompNum">comp num++</button>
</template>

onWatcherCleanup

注册一个清理函数,在当前侦听器即将重新运行时执行。只能在 watchEffect 作用函数或 watch 回调函数的同步执行期间调用 (即不能在异步函数的 await 语句之后调用)。这个让我想起了防抖,当然可以作为防抖来使用。

<script setup lang="ts">
  import { ref, watch, onWatcherCleanup } from 'vue';
  const num = ref(0);
  watch(
    () => num.value,
    (value) => {
      const timer = setTimeout(() => {
      	// 按钮被点击停下后1秒后打印,一直点击则不触发,输入框同理
        console.log(value, '改变发生请求');
      }, 1000);
      onWatcherCleanup(() => {
        clearTimeout(timer);
      });
    }
  );
</script>

<template>
  <button @click="num++">num++</button>
</template>

标签:count,const,watch,value,vue3.5,vue3,组件,ref
From: https://blog.csdn.net/m0_43599959/article/details/142363851

相关文章

  • vue3/配置Element-Plus主题颜色
    1.了解主题颜色在Element-Plus中,主题颜色通常包含以下属性:主色(PrimaryColor):主色是应用中使用最频繁的颜色,通常用于按钮、链接、图标等,以提供视觉焦点和品牌识别度。辅助色(AuxiliaryColors):辅助色用于支持和补充主色,可以用于不同的组件状态,如成功、警告、错误等。中性......
  • vue3/Element-Plus/路由的使用
    我们来实现一个简单的二级路由1.准备主页和要配置的组件主页面<template><!--加载配置路由--><RouterView></RouterView></template><stylescoped></style>组件1<template><div>考试组件</div></template>组件2<temp......
  • Vue3项目开发——新闻发布管理系统(七)
    文章目录九、新闻分类管理模块设计开发1、新闻分类主页面设计2、封装页面组件3、改造页面4、新闻分类表格渲染4.1封装API,获取新闻分类数据4.2表格动态渲染4.3表格增加loading效果5、实现新闻分类添加和编辑功能5.1点击显示弹层5.2封装弹层组件Ca......
  • 路由跳转登录权限判断/vue3
    1main.ts引入路由和权限校验importrouterfrom"./router";//路由守卫权限拦截2-2import"@/router/permisstion";2router文件夹,三个文件1.1indexe.tsimport{createRouter,createWebHistory}from"vue-router";import{constRouter}from".......
  • vue3自定义指令,全局注册
    1这是directive.js注册的的importtype{Directive,DirectiveBinding}from"vue";importuseUserStorefrom"@/stores/user";import{createPinia}from"pinia";constuserStore=useUserStore(createPinia());//buttonList:["......
  • 【VUE3.0】动手做一套像素风的前端UI组件库---Button
    目录引言做之前先仔细看看UI设计稿解读一下都有哪些元素:素材补充代码编写1.按钮四周边框2.默认状态下按钮颜色立体效果3.鼠标移入聚焦4.模拟鼠标点击效果组件封装1.按类型设置颜色2.设置按钮禁用状态3.处理一个bug4.看下整体组件效果5.完整代码总结引言......
  • 前后端分离Vue3+SpringBoot零食批发商仓库管理系统
    目录功能和开发技术介绍具体实现截图开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示系统开发流程系统运行步骤非功能需求分析操作可行性软件测试源码获取功能和开发技术介绍本系统操作无需详细的操作文档,只需要用户简单的进行操作就可以掌握操作流程,......
  • 前后端分离Vue3+SpringBoot房屋租赁系统(编号:49930163)
    目录功能和开发技术介绍具体实现截图开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示非功能需求分析系统开发流程系统运行步骤软件测试源码获取功能和开发技术介绍本系统操作无需详细的操作文档,只需要用户简单的进行操作就可以掌握操作流程,购买古装操......
  • 前后端分离Vue3+SpringBoot县乡村生活垃圾治理问题中运输地图的设计与实现
    目录功能和开发技术介绍具体实现截图开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示系统开发流程系统运行步骤非功能需求分析操作可行性软件测试源码获取功能和开发技术介绍技术范围:SpringBoot、Nodejs、Python、Vue、爬虫、数据可视化、小程序、安卓......
  • 前后端分离SSM+VUE3基于web的医院食堂订餐系统
    目录功能和开发技术介绍具体实现截图开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示系统开发流程系统运行步骤非功能需求分析操作可行性软件测试源码获取功能和开发技术介绍技术范围:SpringBoot、Nodejs、Python、Vue、爬虫、数据可视化、小程序、安卓......