Vue.js开发基础——数据绑定/响应式数据绑定

一、单文件组件

一个基本的单文件组件:

(三个标签顺序可随意更改)

<template>
<!-- 此处编写组件的结构 -->
</template>
<script>
/* 此处编写组件的逻辑 */
</script>
<style>
/* 此处编写组件的样式 */
</style>

1.模板(template)

模板用于搭建当前组件的DOM结构,代码写在<template>标签中。<template>是Vue提供的容器标签,只起到包裹作用,不是DOM元素。每个单文件组件最多可以包含一个顶层<template>标签。

2.样式(style)

样式通过css代码为当前组件设置样式,代码写在<style>标签中。每个单文件组件可以包含多个顶层<style>标签,不需要样式也可以省略<style>标签。

3.逻辑

逻辑是通过JavaScript代码处理组件的数据与业务,代码写在<script>标签中。每个单文件组件只能包含一个script>标签,如果当前页面没有逻辑代码且不包含<template>标签,则可以省略<script>标签。

二、数据绑定

1.数据绑定

(1)定义数据

由于数据和页面是分开的,在显示数据前需要在<script>标签中定义组件所需要的数据,语法如下;

<script>
export default {setup(){
return{数据名:数据值,......}}
}
</script>

export default——模块导出语法

setup()函数——是Vue3特有的,该函数是组合API的起点,在函数中可以定义数据和方法并通过return关键词返回给一个对象,用于将对象中的数据暴露给模板和组件实例。

更加简洁的setup()函数使用语法:

<script setup>const  数据名 = 数据值</script>

(2)输出数据

在<script>标签中定义了的数据后,输出数据由Vue开发者提供的Mustache语法(又称为双大括号语法)在<template>标签中进行输出,语法如下:

{{数据名}}

Mustache语法——还可以将表达式的值作为输出内容。(表达式的值可以是字符串、数字等等类型)

2.响应式数据绑定

Vue开发者提供了ref()函数、reactive()函数、toRef()函数和toRefs()函数用于定义响应式数据。

注意:在使用以上函数时要从vue中引入才可以使用。

(1)ref()函数

ref()函数用于将数据转换成响应式数据,其参数为数据,返回值为转换后的响应式数据。

使用ref()函数定义响应式数据的语法如下:

响应式数据 = ref(数据) 

如果需要更改响应式数据的值,可以使用以下语法:

响应式数据.value = 新值

例:使用ref()函数将数据"每天都开心!"改为响应式数据,并更改为"开心每一天!"。

1.创建src/components/Ref.vue文件

<template>
{{ message }}
</template>
<script setup>
import { ref } from 'vue'
const message = ref('每天都开心!')
/*这里用到了延时函数setTimeout(){}和
箭头函数()=>{}
*/
setTimeout(()=>{message.value = '开心每一天!'
},2000)
</script>

这里用到了延时函数setTimeout和箭头函数,setTimeout函数与箭头函数结合使用非常简单,只需要将箭头函数作为setTimeout的第一个参数,并将延迟时间作为第二个参数即可

使用延时函数与箭头函数结合的优势:在setTimeout中使用箭头函数的一个重要优势是解决了this关键字的问题。在普通的匿名函数中,this关键字指向的是函数的执行环境,而在箭头函数中,this关键字指向的是定义函数时的环境。这意味着在箭头函数中使用this关键字可以避免一些常见的作用域问题,并且可以更方便地访问外部作用域中的变量‌1。

//箭头函数//延时函数
setTimeout(() => {// 要执行的代码}, 延迟的时间); //延时函数与箭头函数结合
setTimeout(() => {// 要执行的代码
}, 延迟的时间);

(2)reactive()函数

reactive()函数用于创建一个响应式对象或数组,将普通的对象或数组作为参数传给该函数即可。

使用reactive()函数定义响应式数据的语法如下:

响应式对象或数组 = reactive(普通的对象或数组)

例:使用reactive()函数定义一个响应式对象,其中包含信息"每天都开心。"。

1.创建src/components/Reactive.vue文件

<template>
{{ obj.message }}
</template>
<script setup>
import { reactive } from 'vue'
const obj= reactive({message:'每天都开心!'})
setTimeout(()=>{obj.message = '开心每一天!'
},2000)
</script>

(3)toRef()函数

toRef()函数用于将响应式对象中的单个属性转换为响应式数据

使用toRef()函数定义响应式数据的语法如下:

响应式数据 = toRef(响应式对象,'属性名')

例:使用toRef()函数将一个响应式对象中的单个message属性转换成响应式数据。

<template>
<div>message的值:{{ message }}</div>
<div>obj.message的值:{{ obj.message }}</div>
</template>
<script setup>
import { reactive,toRef } from 'vue'
const obj= reactive({message:'每天都开心!'})
const obj = toRef(obj,'message')
setTimeout(()=>{message.value = '开心每一天!'
},2000)
</script>

(4)toRefs()函数

toRefs()函数用于将响应式对象中的所有属性转换为响应式数据。

使用toRefs()函数定义响应式数据的语法如下:

所有属性组成的对象 = toRefs(响应式对象)

例:使用toRefs()函数将一个响应式对象中的所有属性转换成响应式数据。

<template>
<div>message的值:{{ message }}</div>
<div>obj.message的值:{{ obj.message }}</div>
</template>
<script setup>
import { reactive,toRefs } from 'vue'
const obj= reactive({message:'每天都开心!'})
let { message } = toRefs(obj)
setTimeout(()=>{message.value = '开心每一天!'
},2000)
</script>

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

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

相关文章

智能化SCRM方案助力企业高效管理与营销转型

内容概要 现代企业面临着复杂多变的市场环境&#xff0c;传统的管理与营销方式常常无法满足日益增长的需求。这时&#xff0c;智能化SCRM方案便应运而生&#xff0c;为企业带来了新的机遇与挑战。智能化SCRM方案不仅仅是一个单一的工具&#xff0c;它更像是一个全面的解决方案…

Axure是什么软件?全方位解读助力设计入门

在产品设计和开发领域&#xff0c;Axure是一款大名鼎鼎且功能强大的软件&#xff0c;它为专业人士和团队提供了卓越的设计支持&#xff0c;帮助他们将创意转化为实际可操作的产品原型。 一、Axure 的基本介绍 Axure是一款专业的原型设计工具&#xff0c;主要用于创建交互式的…

交流电压1000V以上但不超过35KV的交流调速电气传动系统额定值规定

交流电压1000V以上但不超过35KV的交流调速电气传动系统的额定值规定&#xff0c;主要遵循国家标准GB/T 12668.4-2006《调速电气传动系统 第4部分&#xff1a;一般要求 交流电压1000V以上但不超过35kV的交流调速电气传动系统额定值的规定》。以下是该标准的一些关键内容和要点&a…

Spring-Day8

AOP通知 前置通知Befor&#xff1a;目标方法之前执行 Aspect // 标记为了切面类 Component // 必须声明为 Spring 的 bean public class LogAspect {// 实现方法用时 切点表达式// 前置通知Before("execution(* com.example.c4_aop.UserService.*(..) )")public void…

Vue3 -- 新组件【谁学谁真香系列6】

Teleport Teleport是什么?–Teleport是一种能够将我们的组件html结构移动到指定位置的技术。 父组件: <template><div calss="outer"><h2>我是App组件</h2><img src="https://z1.ax1x.com/2023/11/19/piNxLo4.jpg" alt=&qu…

go语言中的接口含义和用法详解

在Go语言中&#xff0c;接口&#xff08;interface&#xff09;是一种抽象类型&#xff0c;它定义了一组方法签名而不实现具体的方法。接口在Go语言中起到了类似于其他语言中“面向接口编程”的作用&#xff0c;是实现多态和解耦的重要工具。以下是Go中接口的含义及其用法的详细…

【ShuQiHere】️`adb kill-server` 和 `adb start-server` 命令的作用

&#x1f4df;&#x1f527; 【ShuQiHere】️ &#x1f527;&#x1f4df; 在使用 scrcpy 或其他依赖于 ADB&#xff08;Android Debug Bridge&#xff09; 的工具时&#xff0c;您可能会遇到需要重启 ADB 服务器的情况。今天&#xff0c;我们将详细解释两个常用的 ADB 命令&a…

linux之文件(上)

linux之文件&#xff08;上&#xff09; 一.文件的预备知识二.C语言的文件接口和linux的系统接口2.1fopen2.2fclose2.3open2.4close2.5write2.6read 三.文件与系统3.1文件描述符3.2 标准输入&#xff0c;标准输出和标准错误3.3fd的分配规则 四.重定向4.1重定向的概念4.2重定向的…

CSS的配色

目录 1 十六进制2 CSS中的十六进制2.1 十六进制颜色的基本结构2.2 十六进制颜色的范围2.3 简写形式2.4 透明度 3 CSS的命名颜色4 配色4.1 色轮4.2 互补色4.3 类似色4.4 配色工具 日常在开发小程序中&#xff0c;客户总是希望你的配色是美的&#xff0c;但是美如何定义&#xff…

YOLOv11融合[ECCV2024]自调制特征聚合SMFA模块及相关改进思路|YOLO改进最简教程

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 YOLOv11改进汇总贴&#xff1a;YOLOv11及自研模型更新汇总 《SMFANet: A Lightweight Self-Modulation Feature Aggregation Network for Efficient Image Super-Resolution》 一、 模块介绍 论文链接&#xff1…

数据库SQLite的使用

SQLite是一个C语言库&#xff0c;实现了一个小型、快速、独立、高可靠性、功能齐全的SQL数据库引擎。SQLite文件格式稳定、跨平台且向后兼容。SQLite源代码属于公共领域(public-domain)&#xff0c;任何人都可以免费将其用于任何目的。源码地址&#xff1a;https://github.com/…

【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解

目录 一、前言 二、Spring AI概述 2.1 spring ai是什么 2.2 Spring AI 核心能力 2.3 Spring AI 应用场景 三、Spring AI Alibaba 介绍 3.1 Spring AI Alibaba 是什么 3.2 Spring AI Alibaba 核心特点 3.3 Spring AI Alibaba 应用场景 四、SpringBoot 对接Spring AI Al…

Java:HTTP/HTTPS

HTTP HTTP(全称"超文本传输协议")是一种应用最广泛的应用层协议; 文本=>字符串 超文本:可以传输文本,图片,语言等等其他的各种数据... HTTP各种应用场景: 1.使用浏览器打开网页; 2.打开手机APP; 3.后端程序,都是"分布式/微服务"体系结构; HTTPS可…

android studio 把unversioned文件加入git

在Android Studio中把未版本化的文件纳入Git版本控制&#xff0c;你可以按照以下步骤操作&#xff1a; 打开Android Studio。 打开你的项目。 在项目视图中&#xff0c;右键点击你想要添加的未版本化的文件或文件夹。 在上下文菜单中选择"Add to VCS" -> "…

【Promise】JS 异步之宏队列与微队列

文章目录 1 原理图2 说明3 相关面试题3.1 面试题13.2 面试题23.3 面试题33.4 面试题4 1 原理图 2 说明 JS 中用来存储待执行回调函数的队列包含 2 个不同特定的队列&#xff1a;宏队列和微队列。宏队列&#xff1a;用来保存待执行的宏任务(回调)&#xff0c;比如&#xff1a;定…

递推经典例题 - 爬楼梯

一、题目阅读 题目描述 一段楼梯有n级台阶。你每次可以跨一个、两个或者三个台阶。 请问走上n级台阶有几种方案&#xff1f;答案对998244353取模。 输入格式 一行一个数n。 输出格式 一行一个数&#xff0c;表示方案数。 样例 Input 1 3 Output 1 4 样例解释 1 1 1 3 1 2 …

用 Python 从零开始创建神经网络(二):第一个神经元的进阶

第一个神经元的进阶 引言1. Tensors, Arrays and Vectors&#xff1a;2. Dot Product and Vector Additiona. Dot Product &#xff08;点积&#xff09;b. Vector Addition &#xff08;向量加法&#xff09; 3. A Single Neuron with NumPy4. A Layer of Neurons with NumPy5…

【优选算法 — 滑动窗口】最大连续1的个数 将 x 减到0的最小操作数

最大连续1的个数 最大连续1的个数 题目描述 题目解析 给我们一个元素全是0或者1的数组&#xff0c;和一个整数 k &#xff0c;然后让我们在数组选出最多的 k 个0&#xff1b;这里翻转最多 k 个0的意思&#xff0c;是翻转 0 的个数< k&#xff0c;而不是一定要翻转 k …

各种排序分组

简易排序方法如下: public static void XX(){var circles Z.db.SelectEntities<Circle>();circles circles.OrderByDescending(x > x.Center.Y).ThenBy(x > x.Center.X).ToList();for (int i 0; i < circles.Count; i){DBText text new DBText() { Positi…

svgicon大小问题(简单记录

Prob.: reactts下用类似import XxxIcon from "../icons/xxx.svg语句之后使用< XxxICon >标签&#xff0c;不能直接用style指定大小 &#xff08;viewbox好像是有效的&#xff0c;height和width类似只改了画布大小&#xff0c;没缩放里面的path&#xff09; 过程: 前…