一、ref和reactive

在 Vue 3 中,refreactive 是两种主要的响应式数据创建方式,它们各有特点和适用场景。

1.ref

ref 主要用于创建单个值的响应式引用,通常用于基本类型数据,如数字、字符串等。使用 ref 创建的引用对象可以通过 .value 属性访问内部的值。例如:

import { ref } from 'vue';const count = ref(0); // 创建一个初始值为 0 的响应式引用
console.log(count.value); // 输出 0
count.value++; // 修改引用对象的值
console.log(count.value); // 输出 1

ref 创建的数据是被追踪的,但是只有在访问 .value 属性时才会触发依赖追踪。

2.reactive

reactive 主要用于创建包含多个属性的响应式对象,通常用于创建对象。使用 reactive 创建的响应式对象直接访问属性,并进行修改,就像操作普通 JavaScript 对象一样。例如:

import { reactive } from 'vue';const person = reactive({name: 'John',age: 30
});console.log(person.name); // 输出 'John'
console.log(person.age); // 输出 30person.name = 'Jane'; // 修改对象的 name 属性的值为 'Jane'
person.age = 25; // 修改对象的 age 属性的值为 25console.log(person); // 输出 { name: 'Jane', age: 25 }

reactive 创建的对象及其内部属性都是被完全追踪的,当任何属性被修改时,所有依赖于这些属性的视图都会自动更新。

3.应用场景

  • 如果你只需要管理单个值的响应性,或者需要在模板中使用响应式数据,那么 ref 是一个不错的选择。

  • 如果你需要创建包含多个属性的对象,并且希望这些属性都是响应式的,那么 reactive 更适合用于创建对象。

4.总结

refreactive 在 Vue 3 中是两种不同的响应式数据创建方式,它们各有特点和适用场景。根据具体需求选择合适的方式来管理组件中的数据,将会让你的代码更加清晰和易于维护。

二、属性绑定与事件绑定  

在 Vue 3 中,属性绑定和事件绑定是将数据和事件处理逻辑与模板连接起来的重要方式。它们使得在模板中可以直接使用组件的属性和监听事件,从而实现动态的用户界面。

属性绑定(Property Binding)

属性绑定允许你将组件的属性动态地绑定到模板中的元素或组件上。这可以通过使用 v-bind 指令(通常缩写为 :)来实现。

事件绑定(Event Binding)

事件绑定允许你在模板中监听 DOM 事件或组件事件,并将它们连接到组件的方法上。这可以通过使用 v-on 指令(通常缩写为 @)来实现。

<template><div><!-- 文本内容的属性绑定 --><p :text="message"></p><!-- 图片 src 属性的绑定 --><img :src="imageUrl" alt="Description"><!-- 数据更新按钮,点击时修改 message --><button @click="updateMessage">Change Message</button></div>
</template><script setup>
import { ref } from 'vue';// 定义响应式数据
const message = ref('Hello Vue 3');
const imageUrl = ref('https://example.com/image.jpg');// 更新 message 的函数
function updateMessage() {message.value = 'Updated message in Vue 3!';
}
</script>

三、表单绑定 

在 Vue 3 中,表单绑定是一个常见的需求,用于将表单元素(如 <input><select><textarea> 等)与组件的数据进行双向绑定。Vue 3 提供了灵活的表单绑定方法,包括 v-model 指令和 v-model 的使用方式。 

1.v-model 指令

v-model 是 Vue 3 中用于实现双向数据绑定的特殊指令。它自动将表单元素的值与组件的数据属性进行同步。

<template><div><!-- 文本输入 --><input v-model="message" placeholder="Type something..." /><!-- 复选框 --><input type="checkbox" v-model="checked" /><!-- 单选按钮 --><input type="radio" value="one" v-model="picked" /><input type="radio" value="two" v-model="picked" /><!-- 选择框 --><select v-model="selected"><option disabled value="">Please select one</option><option>A</option><option>B</option><option>C</option></select><!-- 输出 --><p>Message: {{ message }}</p><p>Checked: {{ checked }}</p><p>Picked: {{ picked }}</p><p>Selected: {{ selected }}</p></div>
</template><script setup>
import { ref } from 'vue';const message = ref('');
const checked = ref(false);
const picked = ref('one');
const selected = ref('');
</script>

2.修饰符

Vue 3 为 v-model 提供了一些修饰符,以增强其功能:

  • .lazy:在默认情况下,v-model 在每次 input 事件触发时更新数据。使用 .lazy 修饰符可以改为在 change 事件触发时更新。

  • .number:自动将用户的输入值转换为数值类型。

  • .trim:自动过滤用户输入的首尾空格。

    <template><div><!-- 默认情况下,每次 input 事件触发时更新 --><input v-model="message" placeholder="Type something..." /><!-- 使用 .lazy 修饰符,在 change 事件触发时更新 --><input v-model.lazy="messageLazy" placeholder="Type something..." /><!-- 使用 .number 修饰符,自动转换为数值类型 --><input v-model.number="age" type="number" /><!-- 使用 .trim 修饰符,自动过滤首尾空格 --><input v-model.trim="messageTrim" placeholder="Type something..." /></div>
    </template><script setup>
    import { ref } from 'vue';const message = ref('');
    const messageLazy = ref('');
    const age = ref(0);
    const messageTrim = ref('');
    </script>

    四、计算属性

在 Vue 3 中,计算属性(Computed Properties)是一种声明式的方法,用于声明性地描述一个值是如何根据组件的响应式数据计算得来的。计算属性是基于它们的响应式依赖进行缓存的,只有当相关响应式数据发生变化时,计算属性才会重新计算。 

<template><div><p>Message: {{ message }}</p><p>Reversed Message: {{ reversedMessage }}</p></div>
</template><script setup>
import { ref, computed } from 'vue';const message = ref('Hello Vue 3');// 定义计算属性
const reversedMessage = computed(() => {return message.value.split('').reverse().join('');
});
</script>

计算属性的选项

computed 函数可以接受一个选项对象,其中包含 getset 函数:

  • get 函数:用于计算属性的值。

  • set 函数(可选):用于设置属性的值,这使得计算属性也可以是可写的。

    <script setup>
    import { ref, computed } from 'vue';const message = ref('Hello Vue 3');// 定义可写的计算属性
    const reversedMessage = computed({get: () => {return message.value.split('').reverse().join('');},set: (newValue) => {message.value = newValue.split('').reverse().join('');}
    });
    </script>

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

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

相关文章

设计模式四:装饰模式(Decorator Pattern)

装饰模式是一种结构型设计模式&#xff0c;它允许你动态地给一个对象添加额外的职责&#xff0c;相比继承更加灵活。1. 模式定义装饰模式&#xff1a;动态地给一个对象添加一些额外的职责。就增加功能来说&#xff0c;装饰模式相比生成子类更为灵活。2. 模式结构主要角色&#…

神经网络常见激活函数 14-Mish函数

文章目录Mish函数导函数函数和导函数图像优缺点PyTorch 中的 Mish 函数TensorFlow 中的 Mish 函数Mish 论文 https://arxiv.org/pdf/1908.08681 函数导函数 Mish函数 Mish(x)x⋅tanh⁡⁣(softplus(x))x⋅tanh⁡⁣(ln⁡⁣(1ex))\begin{aligned} \text{Mish}(x) & x \cdot \t…

LAMP迁移LNMP Nginx多站点配置全流程

文章目录前言备份与停止服务nginx安装与配置nginx 编译安装配置服务php-fpm多站点配置phf-fpm介绍多站点配置nginx 多站点配置nginx ssl 配置参考前言 之前服务器使用的是 LAMP环境&#xff0c;想充分利用服务器资源&#xff0c;再运行另外一个站点 在LAMP环境下应该是也可以…

Nginx屏蔽国外IP访问

下载IP列表 # 下载到文件 wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest # 直接输出到终端 curl -sSL https://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest得到一份国内IP配置 # 原始IP列表格式&#xff1a;apnic|CN|ipv4|218.78.0.0|1310…

stl-string模拟

1.介绍主要进行cpp中string的模拟&#xff0c;方便我们更好的对stl进行使用&#xff0c;string没有模板&#xff0c;我们将头文件和函数写在两个不同的文件2.头文件3.cpp文件如有问题&#xff0c;欢迎纠正&#xff01;

基于MATLAB的极限学习机ELM的数据回归预测方法应用

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取 或者私信获取。 1.项目背景 在当今的数据驱动时代&#xff0c;准确且高效的预测模型对于解决复杂问题至关重要。极限学习机&#…

芯谷科技--双四通道模拟/数字多路复用器74HC4052

在电子系统中&#xff0c;信号的多路复用与解复用是常见的需求&#xff0c;特别是在需要对多个信号源进行选择和切换的场景中。芯谷科技推出的 74HC4052 双四通道模拟/数字多路复用器/解复用器&#xff0c;以其高效、灵活的设计&#xff0c;为工程师提供了可靠的解决方案。产品…

基于MATLAB的极限学习机ELM的数据分类预测方法应用

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取 或者私信获取。 1.项目背景 在现代数据挖掘与机器学习领域&#xff0c;面对日益复杂的数据结构和快速增长的数据量&#xff0c;开…

复合机器人在生物制药实验室上下料搬运案例

在医疗行业的物料搬运环节&#xff0c;传统的人工操作模式逐渐暴露出诸多弊端&#xff0c;成为制约企业发展的瓶颈。富唯智能通过引入先进的复合机器人技术&#xff0c;为医疗企业提供了高效、智能的上下料搬运解决方案&#xff0c;助力医疗行业实现自动化与智能化升级。​客户…

嵌入式学习-PyTorch(7)-day23

损失函数的调用import torch from torch import nn from torch.nn import L1Lossinputs torch.tensor([1.0,2.0,3.0]) target torch.tensor([1.0,2.0,5.0])inputs torch.reshape(inputs, (1, 1, 1, 3)) target torch.reshape(target, (1, 1, 1, 3)) #损失函数 loss L1Loss…

用 Ray 跨节点调用 GPU 部署 DeepSeek 大模型,实现分布式高效推理

在大模型时代&#xff0c;单节点 GPU 资源往往难以满足大模型&#xff08;如 7B/13B 参数模型&#xff09;的部署需求。借助 Ray 分布式框架&#xff0c;我们可以轻松实现跨节点 GPU 资源调度&#xff0c;让大模型在多节点间高效运行。本文将以 DeepSeek-llm-7B-Chat 模型为例&…

快速了解 HTTPS

1. 引入 在 HTTP 协议 章节的 reference 段&#xff0c;曾提到过 HTTPS。这里对HTTPS进行详细介绍。 HTTPS 是在 HTTP 的基础上&#xff0c;引入了一个加密层 (SSL)。HTTP 是明文传输的 (不安全)。当下所见到的大部分网站都是 HTTPS 的。 起初是拜运营商劫持所赐&#xff08;…

mysql备份与视图

要求:1.将mydb9_stusys数据库下的student、sc 和course表&#xff0c;备份到本地主机保存为st_msg_bak.sql文件&#xff0c;然后将数据表恢复到自建的db_test数据库中&#xff1b;2.在db_test数据库创建一视图 stu_info,查询全体学生的姓名&#xff0c;性别&#xff0c;课程名&…

【数据结构】 链表 + 手动实现单链表和双链表的接口(图文并茂附完整源码)

文章目录 一、 链表的概念及结构 二、链表的分类 ​编辑 三、手动实现单链表 1、定义单链表的一个节点 2、打印单链表 3、创建新节点 4、单链表的尾插 5、单链表的头插 6、单链表的尾删 7、单链表的头删 8、单链表的查找 9、在指定位置之前插入一个新节点 10、在指…

Go语言时间控制:定时器技术详细指南

1. 定时器基础&#xff1a;从 time.Sleep 到 time.Timer 的进化为什么 time.Sleep 不够好&#xff1f;在 Go 编程中&#xff0c;很多人初学时会用 time.Sleep 来实现时间控制。比如&#xff0c;想让程序暂停 2 秒&#xff0c;代码可能是这样&#xff1a;package mainimport (&q…

C# 转换(显式转换和强制转换)

显式转换和强制转换 如果要把短类型转换为长类型&#xff0c;让长类型保存短类型的所有位很简单。然而&#xff0c;在其他情况下&#xff0c; 目标类型也许无法在不损失数据的情况下容纳源值。 例如&#xff0c;假设我们希望把ushort值转化为byte。 ushort可以保存任何0~65535的…

浅谈自动化设计最常用的三款软件catia,eplan,autocad

笔者从上半年开始接触这三款软件&#xff0c;掌握了基础用法&#xff0c;但是过了一段时间不用&#xff0c;发现再次用&#xff0c;遇到的问题短时间解决不了&#xff0c;忘记的有点多&#xff0c;这里记录一下&#xff0c;防止下次忘记Elpan:问题1QF01是柜安装板上的一个部件&…

网络编程7.17

练习&#xff1a;服务器&#xff1a;#include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include &…

c++ 模板元编程

听说模板元编程能在编译时计算出常量&#xff0c;简单测试下看看&#xff1a;template<int N> struct Summation {static constexpr int value N Summation<N - 1>::value; // 计算 1 2 ... N 的值 };template<> struct Summation<1> { // 递归终…

【深度学习】神经网络过拟合与欠拟合-part5

八、过拟合与欠拟合训练深层神经网络时&#xff0c;由于模型参数较多&#xff0c;数据不足的时候容易过拟合&#xff0c;正则化技术就是防止过拟合&#xff0c;提升模型的泛化能力和鲁棒性 &#xff08;对新数据表现良好 对异常数据表现良好&#xff09;1、概念1.1过拟合在训练…