vue3 ——笔记 (表单输入,监听器)

表单输入

在Vue 3中,v-model指令的用法稍有不同于Vue 2。在Vue 3中,v-model指令实际上是一个语法糖,它会自动将value属性和input事件绑定到组件或元素上,以实现双向数据绑定。

在自定义组件中使用v-model时,需要在组件内部定义modelValueupdate:modelValue属性,以及在适当的时候触发update:modelValue事件来更新数据。

下面是一个示例,演示如何在Vue 3中创建一个带有自定义v-model的组件:

<template><div><input :value="modelValue" @input="updateModelValue($event.target.value)" placeholder="Enter some text"><p>{{ modelValue }}</p></div>
</template><script>
import { defineComponent, ref } from 'vue';export default defineComponent({props: {modelValue: String},emits: ['update:modelValue'],setup(props, { emit }) {const internalValue = ref(props.modelValue);const updateModelValue = (value) => {internalValue.value = value;emit('update:modelValue', value);};return {modelValue: internalValue,updateModelValue};}
});
</script>

在这个示例中,我们定义了一个带有modelValue属性和update:modelValue事件的自定义组件。在组件内部,我们使用ref函数创建了一个响应式变量internalValue,并在updateModelValue方法中更新这个变量的值,并且触发update:modelValue事件。

在父组件中使用这个自定义组件时,可以像下面这样使用v-model指令:

<CustomInput v-model="message" />

这样,当用户在输入框中输入文本时,message变量的值会自动更新,并且在页面上显示出来。

总结来说,Vue 3中的v-model指令仍然用于实现双向数据绑定,但在自定义组件中的使用方式有所变化,需要在组件内部手动处理输入事件和值的更新。

监听器

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

Watch(监听的变量,回调函数)

第一个参数 可以是不同形式的数据源, 但不能直接监听响应式对象的属性值 得到只是值

需要用一个返回该属性的getter属性

watch函数是一个用于监视特定的响应式数据变化并执行回调函数的函数。与watchEffect不同的是,watch函数可以监视特定的响应式数据,并且可以提供更多的控制选项。

<template><div><p>Count: {{ count }}</p><p>Double Count: {{ doubleCount }}</p><button @click="increment">Increment</button></div>
</template><script>
import { ref, watch } from 'vue';export default {setup() {const count = ref(0);const doubleCount = ref(0);watch(count, (newCount, oldCount) => {console.log('Count has changed:', newCount);doubleCount.value = newCount * 2;});const increment = () => {count.value++;};return {count,doubleCount,increment};}
};
</script>

在上面的代码中,我们同样首先导入了refwatch函数。然后在setup函数中创建了两个响应式的变量countdoubleCount。使用watch函数来监视count的变化,并在回调函数中更新doubleCount的值为count的两倍。

当点击“Increment”按钮时,count的值会增加,这会触发watch的回调函数执行,并更新doubleCount的值。

这就是watch函数在Vue 3中的基本用法和代码演示。相比watchEffectwatch函数可以提供更多的控制选项,例如可以监视多个响应式数据、可以配置是否立即执行回调函数等。

深层监听器

直接给watch() 传入一个响应式对象,会隐式地创建一个深层监听器---该回调函数在所有嵌套变更时都会触发

{deep:true}  强制转换为深度监听 深度监听会监听对象中的所有嵌套属性

及时回调的监听器

Watch 默认时懒加载:仅数据变化时才执行回调

{immeditate:true} 创建监听器时,立即执行一次   强制监听器的回调立即执行

watchEffect

watchEffect是一个用于监视响应式数据变化并执行副作用函数的函数。当监视的响应式数据发生变化时,副作用函数会被重新执行。

<template><div><p>Count: {{ count }}</p><button @click="increment">Increment</button></div>
</template><script>
import { ref, watchEffect } from 'vue';export default {setup() {const count = ref(0);watchEffect(() => {console.log('Count has changed:', count.value);// 在这里可以执行任何副作用代码,比如更新DOM、发送网络请求等});const increment = () => {count.value++;};return {count,increment};}
};
</script>

在上面的代码中,我们首先导入了refwatchEffect函数。然后在setup函数中创建了一个响应式的count变量,并使用watchEffect函数来监视count的变化。每当count发生变化时,watchEffect中的副作用函数会被执行,这里我们简单地输出了count的值到控制台。

当点击“Increment”按钮时,count的值会增加,这会触发watchEffect中的副作用函数执行,并将新的count值输出到控制台。

watch vs watchEffect

在Vue 3中,watchwatchEffect都是用于监视响应式数据变化并执行副作用函数的函数,但它们之间有一些重要的区别:

  1. watch

    • watch函数需要指定要监视的响应式数据,可以监视多个数据。
    • watch函数可以提供更多的控制选项,例如可以配置是否立即执行回调函数、可以配置深度监视等。
    • watch函数的回调函数接收两个参数:新值和旧值。
    • watch函数适用于需要精确控制监视行为的情况,例如监视特定的数据变化并执行特定的操作。
  2. watchEffect

    • watchEffect函数不需要指定要监视的响应式数据,它会自动追踪在副作用函数中使用的所有响应式数据。
    • watchEffect函数没有提供额外的控制选项,简单易用。
    • watchEffect函数的副作用函数会在组件渲染时立即执行一次,并在其中使用的响应式数据发生变化时重新执行。
    • watchEffect适用于简单的副作用代码,例如更新DOM、发送网络请求等。

总的来说,watch适用于需要精确控制监视行为的情况,而watchEffect适用于简单的副作用代码。在实际开发中,根据具体需求选择合适的函数来监视响应式数据的变化。

回调的触发时机

当更改响应式状态,它可能会同时会触发vue组件更新和监听器回调

默认情况下,用户创建的监听器回调,都会在vue组件更新之前被调用。这意味着你在监听器回调中访问的dom

是vue更新之前的状态

如果想在 监听器中访问 vue更新之后的dom  flush:'post'

停止监听器

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

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

相关文章

STM32学习和实践笔记(24):PWM输出实验:呼吸灯

本实验所要实现的功能是&#xff1a;通过TIM3的CH1输出一个PWM信号&#xff0c;控制D7指示 灯由暗变亮&#xff0c;再由亮变暗&#xff0c;类似于人的呼吸。程序框架如下&#xff1a; &#xff08;1&#xff09;初始化PC6管脚为PWM输出功能 &#xff08;2&#xff09;PWM输出…

数组不为人知的一面,sizeof与strlen的区分

数组有另外一种表达方式&#xff0c;接下来我用代码的形式展现出来&#xff1a; sizeof 是一个操作符。 是用来计算变量&#xff08;类型&#xff09;所占内存空间大小&#xff0c;不关注内存中存放的具体内容。 单位是字节。 strlen 是一个库函数&#xff0c;是专门求字符…

Akamai 分布式“云+边缘”,打造下一代数字化基座

当下&#xff0c;数字化基础设施正逐步向分布式部署演化&#xff0c;云计算与边缘计算正在成为两大技术支柱。Gartner 数据显示&#xff0c;云服务占 IT 整体支出比例连年上涨&#xff0c;在过去一年已增长至12.1%&#xff1b;IDC 报告显示&#xff0c;截至2021年已有超过500亿…

【iOS】pthread、NSThread

文章目录 前言一、pthread 使用方法pthread 其他相关方法 二、 NSThread创建、启动线程线程相关用法线程状态控制方法NSThread 线程安全和线程同步场景 线程的状态转换 前言 五一这两天准备将GCD相关的知识完&#xff0c;同时NSOperation与NSThread、pthread也是相关知识&…

ffmpeg中stream_loop参数不生效原因分析

问题 使用ffmpeg把一个视频文件发布成一个rtmp流&#xff0c;并设置成循环推流&#xff0c;此时需要使用参数stream_loop&#xff0c;命令如下: ffmpeg.exe -stream_loop -1 -re -i D:\tools\ffmpeg-5.1.2\bin\sei.h264 -c copy -f flv -safe 0 rtmp://localhost:1935/live/te…

【Redis】Redis安装、配置、卸载使用可视化工具连接Redis

文章目录 1.前置条件2.安装Redis2.1下载Redis安装包并解压2.2在redis目录下执行make命令2.3修改Redis配置文件2.4启动Redis服务2.5连接redis服务 3.Redis卸载4.使用可视化工具连接Redis 1.前置条件 Linux操作系统需要要是64位.如果不清楚自己Linux上是多少位的,可以使用以下命…

Qt之信号与槽

槽的本质&#xff1a;对信号响应的函数。 信号函数和槽函数通常位于某个类中&#xff0c;和普通的成员函数相⽐&#xff0c;它们的特别之处在于&#xff1a; 信号函数⽤ signals 关键字修饰&#xff0c;槽函数⽤ public slots、protected slots 或者 private slots 修饰。sign…

数据结构:时间复杂度/空间复杂度

目录 一、时间复杂度 定义 常见的时间复杂度 如何计算时间复杂度 计算方法 三、实例分析 二、空间复杂度 定义 重要性 常见的空间复杂度 二、空间复杂度 定义 重要性 常见的空间复杂度 计算方法 三、实例分析 大O的渐进表示法 最好情况&#xff08;Best Case…

Java进阶-JINQ详解与使用

本文详细介绍了JINQ&#xff08;Java Integrated Query&#xff09;&#xff0c;一种强化Java中数据查询能力的库&#xff0c;提供类SQL的查询语法和类型安全的操作。文章首先解释了JINQ的基本功能和应用&#xff0c;随后通过具体示例展示了如何使用JINQ进行数据过滤、投影、连…

【竞技宝】意甲:退出齐尔克泽争夺战!国米免签伊朗神锋!

博洛尼亚中锋齐尔克泽成为了意甲当红炸子鸡,不少豪门球队都希望可以签下他,目前对球员有意向的俱乐部包括AC米兰、尤文图斯、阿森纳、国际米兰和曼联,看到自家球员如此有市场,博洛尼亚方面咬死5000万欧元的价格不松口,想要得到他必须要拿出真金白银。不过意甲霸主国际米兰率先退…

408数据结构-二叉树的概念、性质与存储结构 自学知识点整理

前置知识&#xff1a;树的基本概念与性质 二叉树的定义 二叉树是一种特殊的树形结构&#xff0c;其特点是每个结点至多只有两棵子树&#xff08;即二叉树中不存在度大于 2 2 2的结点&#xff09;&#xff0c;并且二叉树是有序树&#xff0c;左右子树不能互换。 与树类似&#…

笔试强训week3

day1 Q1 难度⭐ 牛牛冲钻五_牛客小白月赛38 (nowcoder.com) 题目&#xff1a; 牛牛最近在玩炉石传说&#xff0c;这是一款一对一对战的卡牌游戏&#xff0c;牛牛打算努力冲上钻五分段&#xff0c;获得丰厚的天梯奖励。 炉石传说的段位可以用星数来表示&#xff0c;具体规则…

【linuxC语言】空洞文件

文章目录 前言一、空洞文件1.1 空洞文件的介绍1.2 用途 二、示例代码总结 前言 在 Linux 系统编程中&#xff0c;空洞文件是一种特殊类型的文件&#xff0c;它包含了逻辑上的空洞&#xff0c;也就是说文件中的某些部分并没有实际写入数据。尽管文件在逻辑上可能非常大&#xf…

webpack 常用插件

clean-webpack-plugin 这个插件的主要作用是清除构建目录中的旧文件&#xff0c;以确保每次构建时都能得到一个干净的环境。 var { CleanWebpackPlugin } require("clean-webpack-plugin") const path require("path");module.exports {mode: "de…

Springboot+mybatis升级版(Postman测试)

一、项目结构 1.导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apach…

12_Scala_package

文章目录 Scaal面向对象编程1.回顾Java2.package可以多次声明3.设置作用域&#xff0c;设置上下级4.包可以当作对象使用5.import6.Scala用_取代Java *7.导入多个包8.屏蔽类9.类起别名10.import的规则11.有些包无需导入 Scaal面向对象编程 Scala是一门完全面向对象语言&#xf…

Linux的权限管理

文章目录 文件权限文件类型文件访问者的分类文件权限的类型 文件访问权限的设置目录的权限 文件权限 对于每个LInux文件&#xff0c;如果用ll指令查看的话&#xff0c;可以发现每个文件前面都有一串类似的字符&#xff1a; 这里总共有十个字符&#xff0c;其中第一个字符表示…

QT httpServer多线程后台服务器的例子实现

1.需求 1.1 用户需要其他平台&#xff08;web端&#xff09;调用Qt平台的接口&#xff0c;获取想要的数据并实时显示在网页里&#xff0c;比如实时的温湿度&#xff0c;用户数据等 1.2 用户需要在其他平台&#xff08;web端&#xff09;调用Qt平台的接口&#xff0c;下发数据…

贝叶斯统计实战:Python引领的现代数据分析之旅

贝叶斯统计这个名字取自长老会牧师兼业余数学家托马斯贝叶斯(Thomas Bayes&#xff0c;1702—1761)&#xff0c;他最先推导出了贝叶斯定理&#xff0c;该定理于其逝世后的1763年发表。但真正开发贝叶斯方法的第一人是Pierre-Simon Laplace(1749—1827)&#xff0c;因此将其称为…

Copilot Venture Studio創始合伙人楊林苑確認出席“邊緣智能2024 - AI開發者峰會”

隨著AI技術的迅猛發展&#xff0c;全球正逐步進入邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同書寫著分布式智能創新應用的壯麗篇章。邊緣智能&#xff0c;作為融合邊緣計算和智能技術的新興領域&#xff0c;正逐漸成為推動AI發展的關鍵力量。借助分布式和去中心…