【Vue3语法单文件——自用】

1. Vue3基础语法

<script setup>
import { ref,computed } from 'vue'// 定义响应式的变量
const count = ref(0)
const author = ref({name: 'John Doe',books: ['Vue 2 - Advanced Guide','Vue 3 - Basic Guide','Vue 4 - The Mystery']
})
//定义props
const props = defineProps({foo: String,fruit: {type: String,default: "apple"}
})
//定义方法
const btnClick=()=>{author.value.books.pop()
}
// 定义计算属性 ref 计算属性缓存
const publishedBooksMessage = computed(() => {return author.value.books.length > 0 ? 'Yes' : 'No'
})
</script>

2. 生命周期函数

在这里插入图片描述

<script setup>
import { onMounted } from 'vue'
// 在组件完成初始渲染并创建 DOM 节点后运行代码
onMounted(() => {console.log(`the component is now mounted.`)
})</script>

3. 监听器Watch

在组合式 API 中,我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数。

  • 深层监听器
    • 直接给 watch() 传入一个响应式对象,会隐式地创建一个深层侦听器——该回调函数在所有嵌套的变更时都会被触发,传入deep: true
  • 即时回调监听器
    • 希望在创建侦听器时,立即执行一遍回调,传入 immediate: true
  • 一次性监听器
    • 希望回调只在源变化时触发一次,请使用 once: true 选项。

4.模板引用

为了通过组合式 API 获得该模板引用,我们需要声明一个匹配模板 ref attribute 值的 ref:

<script setup>
import { ref, onMounted } from 'vue'// 声明一个 ref 来存放该元素的引用
// 必须和模板里的 ref 同名
const input = ref(null)onMounted(() => {input.value.focus()
})
</script><template><input ref="input" />
</template>

5.props单向数据流

所有的 props 都遵循着单向绑定原则,props 因父组件的更新而变化,自然地将新的状态向下流往子组件,而不会逆向传递。这避免了子组件意外修改父组件的状态的情况,不然应用的数据流将很容易变得混乱而难以理解。
每次父组件更新后,所有的子组件中的 props 都会被更新到最新值,这意味着你不应该在子组件中去更改一个 prop。

想要更改一个 prop 的需求通常来源于以下两种场景:

  • prop 被用于传入初始值;而子组件想在之后将其作为一个局部数据属性。在这种情况下,最好是新定义一个局部数据属性,从 props 上获取初始值即可:
const props = defineProps(['initialCounter'])
// 计数器只是将 props.initialCounter 作为初始值
// 像下面这样做就使 prop 和后续更新无关了
const counter = ref(props.initialCounter)
  • 需要对传入的 prop 值做进一步的转换。在这种情况中,最好是基于该 prop 值定义一个计算属性:
const props = defineProps(['size'])
// 该 prop 变更时计算属性也会自动更新
const normalizedSize = computed(() => props.size.trim().toLowerCase())

6.如何编写抛出事件

//写在template中
<button @click="$emit('increaseBy', 1)">Increase by 1
</button>
<script setup>
const emit = defineEmits(['inFocus', 'submit'])
// 放在方法中
function buttonClick() {emit('submit')
}
</script>

父组件可以通过 v-on (缩写为 @) 来监听事件:

<MyComponent @some-event="callback" />

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

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

相关文章

为什么forEach中的await不起作用

在JavaScript的forEach方法中使用await是无效的&#xff0c;因为forEach方法不支持异步操作的等待。 forEach是一个数组的遍历方法&#xff0c;它会对数组中的每个元素依次执行提供的回调函数。而在JavaScript中&#xff0c;await关键字只能在异步函数(async函数)中使用&#…

[RK3399 Linux] 移植Linux 5.2.8内核详解

背景是在RK3399上面移植Rockchip官方提供的u-boot 2017.09 一、linux内核 1.1 源码下载 内核源码下载地址为:《https://www.kernel.org/》: 也可以到内核镜像网址下载https://mirrors.edge.kernel.org/pub/linux/kernel/,这里下载速度更快。 如果下载速度太慢,无法下载,…

代码随想录刷题day51|股票买卖(含冷冻期)股票买卖(含手续费)

文章目录 day51学习内容一、股票买卖--含冷冻期1.1、动态规划五部曲1.1.1、 确定dp数组&#xff08;dp table&#xff09;以及下标的含义1.1.2、确定递推公式1.1.3、 dp数组如何初始化1.1.4、确定遍历顺序1.1.5、输出结果 1.2、代码 二、股票买卖--含手续费2.1、动态规划五部曲…

批量clone某个github用户的所有项目

要批量克隆某个 GitHub 用户的所有仓库&#xff0c;你可以使用 GitHub API 来列出该用户的所有仓库&#xff0c;并使用命令行工具来进行克隆。以下是一种可能的方法&#xff1a; 获取 GitHub API 访问令牌&#xff1a;首先&#xff0c;你需要在 GitHub 上生成一个访问令牌&…

蓝牙app设计(方案二) E4A (时钟 优缺点)

例程改的! 主界面 虽然上面有搜索功能,但是本人建议先自行配对在使用,这样更好用,把要使用的设备收藏一下更好找哦(这样就是橙色的了,只需要点对应蓝牙左边) 代码修改部分 原版是不停向下滚动显示,这样个人觉得不太好看,所以加了个时钟,到对应时钟周期清空(达到刷…

BGP小实验

光只是知道理论还不行&#xff0c;还是要多动手练练&#xff0c;就练一个bgp实验吧&#xff0c;梳理一下做题思路 实验要求&#xff1a; 大体要求就是&#xff1a;R1的环回可以ping通R2-R5的环回&#xff0c;R5同理 思路&#xff1a; 基础配置&#xff1a; 第一步先把地址环…

二叉树练习day.7

530.二叉搜索树的最小绝对差 链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&…

【记录】Prompt模板|作为甲方怎么清晰专业地描述自己的需求(又名“乙方,给你的甲方扔个GPT解放自己吧”)

这篇Prompt摘抄并修改自朋友送给我的书的第49页5.2.3让ChatGPT构建提示&#xff0c;质量挺不错&#xff0c;支持一下她的博客&#xff1a;【好书推荐2】AI提示工程实战&#xff1a;从零开始利用提示工程学习应用大语言模型。 书长这样&#xff1a; 不啰嗦了&#xff0c;正文如…

多张图如何制作一图一码?图片批量转二维码的制作方法

二维码现在经常被用来作为图片的载体&#xff0c;将图片生成二维码之后通过扫描二维码的方式来查看图片信息&#xff0c;那么如果遇到需要将几十张图片分别单独制作二维码的需求时&#xff0c;有什么方法能够一次性批量建码呢&#xff0c;相信有很多的小伙伴对这个问题的解决方…

关于conda安装pytorch gpu总是会自动变成cpu版本

这篇文章讲了三种方法&#xff0c;由于我使用的服务器无法连接外网&#xff0c;所以这些方法我没成功安装的pytorch不是GPU版本而是CPU版本_pytorch安装包里只是cpu-CSDN博客 然后我瞎试发现使用 conda install dataclasses 居然能够连带着把gpu版本的pytorch下载下来&…

arm64位系统中编译ffmpeg

大致过程仍然和x86平台一致&#xff1a; ./configure xxxxmakemake install 所需要变化的是需要在 ./configure xxxx 后面多加几个编译选项 cd ffmpeg ./configure (x64下的依赖配置&#xff1a;......)--prefixbin --archaarch64 --target-oslinux --enable-cross-compile …

水仙花数python

水仙花数&#xff08;Narcissistic number&#xff09;是指一个n位正整数&#xff0c;其各位数字的n次幂之和等于该数本身。例如&#xff0c;153是一个3位的水仙花数&#xff0c;因为&#xff1a;1^3 5^3 3^3 153。在Python中&#xff0c;你可以编写一个简单的脚本来找到所有…

Linux:systemd和systemctl基本使用示例

目录 systemd管理Flask应用示例systemctl常用操作 文档 https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.htmlSystemd 入门教程&#xff1a;命令篇Systemd 入门教程&#xff1a;实战篇 systemd管理Flask应用示例 创建虚拟环境&#xff0c;做好环境隔…

探秘冒泡排序:原理、实现与优化策略

冒泡排序&#xff0c;以其直观易懂的名称和简单朴素的操作&#xff0c;成为了许多初学者接触排序算法的首选。本文将详细解析冒泡排序的原理、实现步骤&#xff0c;并探讨其优化策略及应用场景&#xff0c;帮助读者全面理解这一经典排序算法的魅力所在。 一、冒泡排序原理 冒…

设计模式学习笔记 - 设计模式与范式 -行为型:13.访问者模式(下):为什么支持双分派的语言不需要访问者模式

概述 上篇文章&#xff0c;我们学习了访问者模式的原理和实现&#xff0c;并还原了访问者模式诞生的过程。总体来说&#xff0c;这个模式的代码实现比较难&#xff0c;所以应用场景不多。从应用开发的角度来说&#xff0c;它的确不是我们学习的重点。 本章&#xff0c;我们把…

高并发高性能接口中,异步打印并采集业务日志的实现方案

一、背景 高并发接口中&#xff0c;为了提高接口的高性能&#xff0c;在需要保存审计及操作记录的时候&#xff0c;往往有以下常见方案&#xff1a; 保存到redis数据库异步保存到mysql/mongodb/es等数据库logger打印业务日志&#xff0c;采集与展示则交由elk模块 对于第一种…

OpenLayers6实战,OpenLayers实现鼠标拖拽方式绘制平行四边形

专栏目录: OpenLayers实战进阶专栏目录 前言 本章介绍如何使用OpenLayers在地图上使用实现鼠标拖拽方式绘制平行四边形。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用: vue项目…

初学SSRF总结

什么是SSRF SSRF是由攻击者构造通过服务端发起请求的安全漏洞。通常情况下&#xff0c;SSRF的攻击对象是外部无法访问的内网&#xff08;因为是由服务端发起的请求所以攻击能够访问到内部系统&#xff09; 由于服务端提供了从其它服务器获取数据的功能&#xff0c;但是有没有…

SPLD论文笔记

SLPD论文笔记 题目&#xff1a;SLPD: Slide-Level Prototypical Distillation for WSIs 摘要 提高特征表示能力是许多全玻片病理图像 &#xff08;WSI&#xff09; 任务的基础。最近的工作在病理特异性自我监督学习&#xff08;SSL&#xff09;方面取得了巨大成功。然而&…

C++初阶:反向迭代器

reverse_iterator的封装实现 Reverse_Iterator.h namespace xx {// 所有容器的反向迭代器// 迭代器适配器template<class Iterator, class Ref, class Ptr>struct Reverse_iterator{Iterator _it;typedef Reverse_iterator<Iterator, Ref, Ptr> Self;Reverse_iter…