Vue 3 相对于 Vue2,模板和组件的一些变化

目录

  • 1,模板的变化
    • 1,v-model
      • vue2
      • vue3
    • 2,v-if 和 v-for
    • 3,key
      • v-for
      • v-if
    • 4,Fragment
  • 2,组件的变化
    • 1,Teleport
    • 2,异步组件

1,模板的变化

1,v-model

vue2

对组件使用双向绑定时,有2种方式

  1. v-model,默认会绑定属性 value 和事件 input
<ChildComponent :value="myTitle" @input="myTitle = $event" />
<!-- 简写为 -->
<ChildComponent v-model="myTitle" />
  1. async 修饰符
<ChildComponent :title="myTitle" @update:title="myTitle = $event" />
<!-- 简写为 -->
<ChildComponent :title.sync="myTitle" />

vue3

做了修改,

  1. v-model 绑定的属性 value --> modelValue,事件input --> update:modelValue
<ChildComponent :modelValue="myTitle" @update:modelValue="myTitle = $event" />
<!-- 简写为 -->
<ChildComponent v-model="myTitle" />
  1. 删除了async 修饰符,该功能由 v-model 的参数替代。
<ChildComponent :title="myTitle" @update:title="myTitle = $event" />
<!-- 简写为 -->
<ChildComponent v-model:title="myTitle" />
  1. 允许自定义v-model修饰符。官网参考
<!-- 父组件 -->
<template><ChildComponent v-model.cap="data1" v-model:title.capitalize="data2" />
</template><script setup>
import { ref, reactive } from "vue";
import ChildComponent from "./components/ChildComponent.vue";const data1 = ref(false);
const data2 = reactive({ a: 1, b: 2 });
</script>
<!-- 子组件 -->
<script setup>
const props = defineProps({modelValue: Boolean,title: Object,modelModifiers: { default: () => ({}) }, // v-model 默认的修饰符对象。titleModifiers: { default: () => ({}) }, // v-model 有参数时,修饰符对象为 arg + "Modifiers"
});
console.log(props.modelModifiers); // {cap: true}
console.log(props.titleModifiers); // {capitalize: true}
</script>

2,v-if 和 v-for

vue2 和 vue3 都不推荐同时使用 v-ifv-for

优先级:

  • vue2:v-for > v-if。官网参考
  • vue3:v-for < v-if。官网参考

3,key

v-for

当使用<template>进行v-for循环时:

  • vue2 的 key 需要放到子元素上。
  • vue3 的 key 需要放到 <template> 上。
<!-- vue2 -->
<template v-for="todo in todos"><li :key="todo.name">{{ todo.name }}</li>
</template>
<!-- vue3 -->
<template v-for="todo in todos" :key="todo.name"><li>{{ todo.name }}</li>
</template>

v-if

当使用 v-if v-else-if v-else分支的时:

  • vue2 需要指定 key 才能保证唯一。
  • vue3 不再需要指定key值,因为会自动给每个分支一个唯一的key

使用如下代码举例

<template><div><div v-if="showAccount"><label for="">账号</label><input type="text" name="" id="" /></div><div v-else><label for="">密码</label><input type="text" name="" id="" /></div><button @click="showAccount = !showAccount">切换</button></div>
</template>

vue2 的效果

在这里插入图片描述

vue3 的效果

在这里插入图片描述

vue2 想实现一样的效果,就得给 v-if v-else 分支添加唯一 key 才行。

4,Fragment

vue3现在允许组件出现多个根节点。

<!-- vue2 -->
<template><div><h1>标题1</h1><h2>标题2</h2></div>
</template>
<!-- vue3 -->
<template><h1>标题1</h1><h2>标题2</h2>
</template>

2,组件的变化

1,Teleport

官网参考

是 vue3 的内置组件。该组件的子元素将被渲染到指定 DOM 元素中(使用 to 指定)。

to 可以是 css 选择器字符串,也可以是 DOM 元素对象。

经典例子:Dialog 弹窗一般都会渲染到 body 元素下。

<template><div><button @click="open = true">Open Modal</button><Teleport to="body"><div v-if="open"><p>dialog</p><button @click="open = false">Close</button></div></Teleport></div>
</template><script setup>
import { ref } from "vue";const open = ref(false);
</script>

2,异步组件

参考这篇文章


以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

垃圾回收系统小程序定制开发搭建攻略

在这个数字化快速发展的时代&#xff0c;垃圾回收系统的推广对于环境保护和可持续发展具有重要意义。为了更好地服务于垃圾回收行业&#xff0c;本文将分享如何使用第三方制作平台乔拓云网&#xff0c;定制开发搭建垃圾回收系统小程序。 首先&#xff0c;使用乔拓云网账号登录平…

【UE5 Cesium】actor随着视角远近来变化其本身大小

效果 步骤 1. 首先我将“DynamicPawn”设置为默认的pawn类 2. 新建一个父类为actor的蓝图&#xff0c;添加一个静态网格体组件 当事件开始运行后添加一个定时器&#xff0c;委托给一个自定义事件&#xff0c;每2s执行一次&#xff0c;该事件每2s获取一下“DynamicPawn”和acto…

html+css 通过div模拟出一个表格样式,优化多个边框导致的宽度计算问题

htmlcss 通过div模拟出一个表格样式&#xff0c;优化多个边框导致的宽度计算问题 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

VB.NET—DataGridView控件教程详解

目录 前言: 过程: 第一步: 第二步: 第三步: 第四步: 第五步&#xff1a; 番外篇: 总结: 前言: DataGridView是.NET FormK中的一个Windows窗体控件&#xff0c;它提供了一个可视化的表格控件&#xff0c;允许用户以表格形式显示和编辑数据。它通常用于显示和编辑数据库…

JavaEE-博客系统2(功能设计)

本部分内容&#xff1a;实现博客列表页&#xff1b;web程序问题的分析方法&#xff1b;实现博客详情页&#xff1b; 该部分的代码如下&#xff1a; WebServlet("/blog") public class BlogServlet extends HttpServlet {//Jackson ObjectMapper类(com.fasterxml.jac…

Pyhotn: Mac安装selenium没有chromedriver-114以上及chromedriver无法挪到/usr/bin目录下的问题

1.0 安装selenium 终端输入&#xff1a; pip install selenium 查看版本&#xff1a; pip show selenium2.0 安装chromedriver 查看chrome版本 网上大多数是&#xff0c;基本到114就停了。 https://registry.npmmirror.com/binary.html?pathchromedriver/ 各种搜索&#…

ros1 自定义订阅者Subscriber的编程实现

话题模型 图中&#xff0c;我们使用ROS Master管理节点。 有两个主要节点&#xff1a; Publisher&#xff0c;名为Turtle Velocity&#xff08;即海龟的速度&#xff09;Subscriber&#xff0c;即海龟仿真器节点 /turtlesim Publisher(Turtle Velocity)&#xff0c;发布Messa…

Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)

一、触摸 TouchAction 在所有的 Appium 客户端库里&#xff0c;TouchAction 触摸对象被创建并被赋予一连串的事件。 规范里可用的事件有&#xff1a; * 短按(press) * 释放(release) * 移动到(moveTo) * 点击(tap) * 等待(wait) * 长按(longPress) * 取消(cancel) * 执行(per…

【教程】多进程下载百度旋转验证码图片-制作数据集

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 效果展示&#xff1a; 直接上代码&#xff0c;开箱即用&#xff08;当然selenium库自己装一下&#xff09;&#xff1a; import os import time import requests from selenium import webdriver from selenium.…

【Linux】服务器与磁盘补充知识,硬raid操作指南

服务器硬件 cpu 主板 内存 硬盘 网卡 电源 raid卡 风扇 远程管理卡 1.硬盘尺寸: 目前生产环境中主流的两种类型硬盘 3.5寸 和2.5寸硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器 但是3.5寸没法转换成2.5寸 2.如何在服务器上制作raid 华为服务器为例子做…

如何找出最优的【SVC】核函数和参数值—以乳腺癌数据集为例

在实际的工作中&#xff0c;有的时候我们不知道数据特征&#xff0c;也不知道我们的数据是线性还是非线性。因此我们需要对数据一步步进行摸索&#xff0c;来找到最优的核函数和参数值。接下来我们以sklearn乳腺癌数据集为例。 先来导入相应的模块&#xff1a; from sklearn.d…

【I/O流之旅】File类-零基础入门指南

&#x1f38a;专栏【Java】 &#x1f33a;每日一句:看不清楚未来时,就比别人坚持久一点 ⭐欢迎并且感谢大家指出我的问题 目录 1.File概述 2.File构造方法 (1).根据文件路径创建文件对象 (2).根据父路径名字符串和子路径名字符串创建对象 (3).根据父路径对应文件对象和子路…

第20章_Myisam与InnoDB

文章目录 区别如何选择innodb额外补充知识innodb为什么推荐使用自增ID作为主键innodb引擎4大特性 区别 InnoDB支持事务&#xff0c;MyISAM不支持&#xff0c;对于InnoDB每一条SQL语言都默认封装成事务&#xff0c;自动提交&#xff0c;这样会影响速度&#xff0c;所以最好把多条…

顶板事故防治vr实景交互体验提高操作人员安全防护技能水平

建筑业在我国各行业中属危险性较大且事故多发的行业&#xff0c;在建筑业“八大伤害”(高处坠落、坍塌、物体打击、触电、起重伤害、机械伤害、火灾爆炸及其他伤害)事故中&#xff0c;高处坠落事故的发生率最高、危险性极大。工地现场培训vr坠落体验利用虚拟现实技术还原各种情…

Day23力扣打卡

打卡记录 将 x 减到 0 的最小操作数&#xff08;逆向思维 滑动窗口&#xff09; 链接 将 x 减到 0 的最小操作数&#xff0c;可以逆向思考&#xff0c;求一个数组中的最大长度的滑动窗口&#xff0c;来使得这个窗口里的数等于 全数组之和 - x 的值。 class Solution { publ…

LLM之幻觉(一):大语言模型幻觉解决方案综述

论文题目&#xff1a;《Cognitive Mirage: A Review of Hallucinations in Large Language Models》 ​论文链接&#xff1a;https://arxiv.org/abs/2309.06794v1 论文代码&#xff1a;https://github.com/hongbinye/cognitive-mirage-hallucinations-in-llms 一、幻觉介绍 …

原语:串并转换器

串并转换器OSERDESE2 可被Select IO IP核调用。 OSERDESE2允许DDR功能 参考&#xff1a; FPGA原语学习与整理第二弹&#xff0c;OSERDESE2串并转换器 - 知乎 (zhihu.com) 正点原子。 ISERDESE2原语和OSERDESE2原语是串并转换器&#xff0c;他的的功能都是实现串行数据和并行…

0基础学习VR全景平台篇第118篇:利用动作录制器功能避免重复操作 - PS教程

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 嗨&#xff0c;大家好。欢迎收看蛙色VR系列教程之PS利用动作记录器节约补地时间。 大家拍摄在补地的时候&#xff0c;利用插件选择输入输出选项的时候&#xff0c;每次重复操作…

基于springboot垃圾分类管理系统

基于springboot垃圾分类管理系统 摘要 垃圾分类管理系统是一个基于现代技术和数据管理方法的解决方案&#xff0c;旨在协助城市和社区更有效地管理垃圾分类。在这个系统中&#xff0c;Spring Boot框架充当了后端应用程序的构建工具&#xff0c;为其提供了高度灵活的特性。该系统…

我在Vscode学OpenCV 图像运算(权重、逻辑运算、掩码、位分解、数字水印)

文章目录 权重 _ 要求两幅图像是相同大小的。[ 1 ] 以数据说话&#xff08; 1&#xff09; 最终&#xff1a;&#xff08; 2 &#xff09;gamma _输出图像的标量值 [ 2 ] 图像的展现力gamma并不等同于增加曝光度&#xff08; 1 &#xff09;gamma100&#xff08; 2 &#xff09…