【vue3】vue3.5

news/2024/9/20 16:19:31 标签: vue.js, javascript, 前端

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

组件属性结构解析赋值

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

<script setup lang="ts">javascript">
  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">javascript">
  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">javascript">
  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>

http://www.niftyadmin.cn/n/5667341.html

相关文章

Spring MVC 基础:接受请求参数

一、HTTP 请求 如何携带参数 在HTTP请求中携带参数的方式取决于你使用的请求方法。常见的HTTP方法有GET和POST&#xff0c;参数传递的方式也有所不同&#xff1a; 1. GET 方法 GET方法通常用于请求服务器发送资源&#xff0c;参数直接附加在URL之后&#xff0c;通过?分隔UR…

如何查看Android设备的dpi

adb shell getprop ro.sf.lcd_density adb shell cat /system/build.prop > build_prop.txt shell cat system/build.prop 结果&#xff1a;参考&#xff1a; 如何查看Android设备的dpi_安卓 查看手机dpi-CSDN博客

ONNX Runtime学习之InferenceSession模块

ONNXRuntime库学习之InferenceSession(模块) 一、简介 onnxruntime.InferenceSession 是 ONNX Runtime 中用于加载和运行 ONNX 模型的核心模块。它提供了一种灵活的方式来在多种硬件设备&#xff08;如 CPU、GPU&#xff09;上执行 ONNX 模型推理。通过 InferenceSession&…

C语言 | Leetcode C语言题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; bool canPartition(int* nums, int numsSize) {if (numsSize < 2) {return false;}int sum 0, maxNum 0;for (int i 0; i < numsSize; i) {sum nums[i];maxNum fmax(maxNum, nums[i]);}if (sum & 1) {return false;}int tar…

element-plus组件问题汇总

element-plus组件问题汇总 一、el-select 1. 下拉选项实现添加全部 问题描述&#xff1a;value为空时&#xff0c;select框中不显示全部选项&#xff0c;但是下拉列表中全部显示是勾选状态 图片&#xff1a; 解决办法&#xff1a;添加 :empty-values“[null, undefined]” …

第一次安装Pytorch

1、新版本的Anaconda内置的python版本是3.12&#xff0c; 目前 Windows 上的 PyTorch 仅支持 Python 3.8-3.11;不支持 Python 2.x。 1、创建运行环境 在不创建虚拟环境的情况下&#xff0c;不建议使用最新的Python和Anaconda。 在几次失败后&#xff0c;我使用的是Anaconda3-2…

深度学习常见面试题及答案(11~15)

算法学习、4对1辅导、论文辅导或核心期刊以及其他学习资源可以通过公众号滴滴我 文章目录 11. 解释一下神经网络中的反向传播算法的作用。一、计算误差二、误差反向传播三、参数更新 12. 简述深度学习中的过拟合问题及常见的解决方法。一、过拟合问题的表现二、过拟合问题的原因…

云原生信息安全:筑牢数字化时代的安全防线

云原生信息安全&#xff1a;筑牢数字化时代的安全防线 一、云原生信息安全概述 云原生安全包含两层重要含义。一方面&#xff0c;面向云原生环境的安全&#xff0c;目标是防护云原生环境中的基础设施、编排系统和微服务等系统的安全。在云原生内部&#xff0c;安全机制多以云原…