全栈开发之路——前端篇(3)setup和响应式数据

全栈开发一条龙——前端篇
第一篇:框架确定、ide设置与项目创建
第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。
本文为该系列的第三篇,主要讲述Vue核心的setup语法,同时讲解再使用了setup后如何设置响应式数据。
辅助文档:HTML标签大全(实时更新)

目录

  • 一、Setup
    • 1. setup引入数据
    • 2. setup传方法
    • 3. setup与Vue2中data等的依赖
    • 4. setup语法糖
  • 二、响应式数据设置
    • 1. ref法 创建基本类型响应式数据
    • 2. reactive方法

setup与data、method是同级,所以不要忘记段后逗号。

一、Setup

setup是Vue3特有的方便设置数据和方法的api,是目前Vue3工程主要使用的。是组合式Api,更加方便且易于维护。

1. setup引入数据

setup(){//数据let name = "TTTi9er"let age = 20let tel = '114514'return {a:name,b:age}
},


return什么数据取决于模板里用不用,你也可以使用传数据的快捷方式,在return里你可以直接写return (name,age)这样相当于return (name = name, age = age)

**注意,此时的name等变量不是相应式的,即数据发生改变的时候不会立刻反应在屏幕上。后续会说,在setup语法糖讲完之后会说。(vue2data中,全是相应式)
**

2. setup传方法

      function showTel(){alert(tel)}return {a:name,b:age,showTel}

在setup块里,用function定义方法,然后把方法名return即可。


注意,setup的返回值也可以是一个函数,但是不常用,知道即可,下面给出一个实例

return function(){  return '函数返回测试'}

可以忽略所有,直接在页面渲染’函数返回测试‘。

3. setup与Vue2中data等的依赖

setup与Vue2的data等是可以共存的。
setup里的数据是最早解析的,所以Vue2能读取Vue3,比如setup里有let a=10,你可以在data中使用c=this.a,是可以在模板里读取c的。

setup中的数据不能读取Vue2写法中的data中的数据!
比如data里写了d:900,你不能在Vue3的setup中写let e = d

总体来说,Vue3向下兼容Vue2,建议不要混写

4. setup语法糖

<template><div class = "style_test"><h1>其他组件</h1><h2>姓名:{{name}}</h2><h2>年龄: {{age}}</h2><button @click="showTel">查看电话</button></div>
</template><script>export default{name : 'Test',//组件名}
</script><script setup>let name = "TTTi9er"let age = 100let tel = '114514'function showTel(){alert(tel)}
</script><style>.style_test{background-color: rgb(72, 138, 166);box-shadow: 0 0 10px;border-radius:10px;padding: 20px;}
</style>

如以上代码所示,我们如果要每一个返回,就会很麻烦,所以Vue3提供了一个setup语法糖,我们用标签<script setup></script>来声明语法糖,他会自动返回其中出现的所有内容。以上代码效果如下。

二、响应式数据设置

1. ref法 创建基本类型响应式数据

    import {ref} from 'vue'let name = ref('TTTi9er')

我们先引入ref函数,然后在需要相应的数据前加入ref()即可。当你用其他方法修改数据后,会直接渲染在网页上。
注意,这么操作之后,nmae会变成类(RefImpl对象),其value值为你设置的值。实际上,就是vue给你写了个方法,让数据可以实时更新。在框架中,加上ref的数据与原来的用法不变,千万不要改成name.value。

但是,后续的方法中,你需要写.value。例子如下

<script setup>import {ref} from 'vue'let name = 'TTTi9er'let age = ref(100)let tel = '114514'function showTel(){alert(tel)}function changeage_test(){age.value += 1}
</script>
<template><div class = "style_test"><h1>其他组件</h1><h2>姓名:{{name}}</h2><h2>年龄: {{age}}</h2><button @click="showTel">查看电话</button><button @click="changeage_test">增加年龄</button></div>
</template>

这样你就已经把age设置为响应式变量了,点击增加后可以即时渲染到屏幕上。

注意,ref用于封装基本变量,字符串、整数等等,一般不包装对象

2. reactive方法

注意,reactive方法用于包装对象。使用方法与ref类似

  let person = reactive({name : 'TTTiger',age : 19})function changeage_test(){person.age += 1}
<template><div class = "style_test"><h1>其他组件</h1><h2>姓名:{{person.name}}</h2><h2>年龄: {{person.age}}</h2><button @click="showTel">查看电话</button><button @click="changeage_test">增加年龄</button></div>
</template>

完全一样,只是把之前的.value换成 对象名.属性名 就行了,只要是对象即可,哪怕是类似别表对象等也行,样例如下 。

      let games = reactive([{id: '1', name: '我超,原'},{id: '2', name: '我超,铲'},{id: '3', name: '我超,农'}])function change_game(){games[0].name = "原神,启动!"}
<template><div class = "style_test"><h1>其他组件</h1><h2>姓名:{{person.name}}</h2><h2>年龄: {{person.age}}</h2><button @click="showTel">查看电话</button><button @click="changeage_test">增加年龄</button><ul><li v-for="g in games" :key = "g.id">{{g.name}}</li>        </ul><button @click="change_game">修改第一个游戏</button></div>
</template>

以上代码展示了用reactive响应式包裹一个对象列表,操作是完全一样的。如果各位看不懂上面的结构,我会实时更新一个HTML标签大全,方便你理解结构。但是实际上,上面的结构你多写自然就会了,如果你没接触过,可以直接望文生义,比如这个v-for显然就是循环取出games中的元素。

注意,reactive定义的对象,不能再方法里给他分配新的对象,而要使用Object.assign(car,new_car)

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

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

相关文章

Linux专栏05:Linux基本指令之目录处理指令

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Linux专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Linux基本指令之目录处理指令 编号&#xff1a;05 文章目录 Linux基…

设置UIProgressView的样式

UIProgressView是UIKit框架中的一个控件&#xff0c;用于显示任务的完成进度。你可以使用UIProgressView来展示任务的完成情况&#xff0c;例如下载文件、上传数据等。 要设置UIProgressView的样式&#xff0c;包括粗细、颜色等&#xff0c;你可以使用UIProgressView的一些属性…

在springboot项目中实现将上传的jpg图片类型转为pdf并保存到本地

前言&#xff1a;前端使用uniapp中的uni.canvasToTempFilePath方法将画板中的内容保存为jpg上传至后端处理 uni.canvasToTempFilePath({canvasId: firstCanvas,sourceType: [album],fileType: "jpg",success: function (res1) {let signature_base64 res1.tempFile…

发表博客之:weight only int8 详细讲解,小白都可以看得懂,不懂请来打我!

发表博客之&#xff1a;weight only int8 详细讲解&#xff0c;小白都可以看得懂&#xff0c;不懂请来打我&#xff01; 考虑一个模型中有一个Gemm Op&#xff0c;有两个输入&#xff0c;假设都是fp16数据类型吧&#xff01; input0是 [ M , K ] [M,K] [M,K],input1是 [ K , N…

Linux的基础IO:文件描述符 重定向本质

目录 前言 文件操作的系统调用接口 open函数 close函数 write函数 read函数 注意事项 文件描述符-fd 小补充 重定向 文件描述符的分配原则 系统调用接口-dup2 缓冲区 缓冲区的刷新策略 对于“2”的理解 小补充 前言 在Linux中一切皆文件&#xff0c;打开文件…

05 华三交换机原理

交换机的工作原理(第三十课)-CSDN博客 1 华三交换机原理 交换机是一种网络设备,用于在局域网(LAN)中实现数据帧的转发和过滤。其工作原理基于MAC地址表,它可以学习、过滤和转发帧到正确的端口。以下是交换机的基本工作原理: 1. 学习阶段: - 当设备首次发送数据包时,…

Leetcode 108.将有序数组转换为二叉搜索树

题目描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,null,9] 也将被…

机器学习-什么是 PCA?

一、PCA是什么&#xff1f; PCA 即主成分分析&#xff08;Principal Component Analysis&#xff09;哦&#xff01;它是一种统计分析方法&#xff0c;主要用于掌握事物的主要矛盾。PCA能从多元事物中解析出主要影响因素&#xff0c;揭示事物的本质&#xff0c;简化复杂问题。…

改变 centos yum源 repo

centos 使用自带的 repo 源 速度慢&#xff0c;可以改为国内的&#xff0c;需要改两个地方 centos7.repo CentOS-Base.repo 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载对应版本repo文件…

ICMP详解

3 ICMP ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制报文协议&#xff09;是一个差错报告机制&#xff0c;是TCP/IP协议簇中的一个重要子协议&#xff0c;通常被IP层或更高层协议&#xff08;TCP或UDP&#xff09;使用&#xff0c;属于网络层协议…

python验证输入的IP地址是否正确

目录 一.前言 二.代码 三.代码分析 一.前言 IP是一组规则,它定义了计算机网络中的设备如何通信。它是一套协议,规定了如何将数据包从一台设备发送到另一台设备。 二.代码 cause = True # 设置判断网址是否正确的标志变量为真 ip …

Uniapp好看登录注册页面

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

VUE2从入门到精通(二)

118、ref引用 【1】JQuery里面的$("#app")。vue mv vm 【2】在vue中&#xff0c;程序员不需要操作dom。程序员只需要维护好数据即可&#xff08;数据驱动视图&#xff09;。所以在vue下&#xff0c;强烈不建议使用jquery&#xff01;&#xff01;&#xff01; 【3】假…

(汇总)vue中在不同页面之间-4种传递参数的方式

Vue项目页面间传递参数和参数存储有很多种&#xff0c;常见的&#xff1a; &#xff08;参考链接&#xff1a;www.qinglite.cn/doc/4603647… url里加参数&#xff0c;比如&#xff1a;/find?idxxx&#xff0c;或/find/xxx&#xff0c;适合少量数据&#xff0c;优点是刷新页面…

大历史下的 tcp:恼人的 timewait

tcp timewait 是个恼人的状态&#xff0c;它的恶心自两类恶心的询问&#xff0c;oncall 和面试。大概诸如 “如何减少 timewait socket 数量”&#xff0c;“tw_reuse 和 tw_recycle …”&#xff0c;如果只为应用&#xff0c;用 reset 关连接就够了。 timewait 状态的根本目的…

4G+北斗太阳能定位终端:一键报警+倾覆报警 双重保障船舶安全

海上作业环境复杂多变&#xff0c;海上航行充满了各种不确定性和风险&#xff0c;安全事故时有发生&#xff0c;因此海上安全与应急响应一直是渔业和海运行业关注的重点。为了提高海上安全保障水平&#xff0c;4G北斗太阳能定位终端应运而生&#xff0c;它集成了一键报警和倾覆…

Edge浏览器新特性深度解析,写作ai免费软件

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

Spring MVC系列之异步请求

概述 Spring MVC的本质其实就是一个Servlet。在理解Spring MVC如何支持异步请求之前&#xff0c;需要先知道Servlet3异步如何支持异步请求。参考Servlet系列之Servlet3异步。 Spring MVC对异步请求的支持主要从三个类来看&#xff1a; AsyncWebRequest&#xff1a;requestWe…

【数据结构】:链表的带环问题

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构 &#x1f337;追光的人&#xff0c;终会万丈光芒 前言&#xff1a; 链表的带环问题在链表中是一类比较难的问题&#xff0c;它对我们的思维有一个比较高的要求&#xff0c;但是这一类…

AI大模型探索之路-训练篇10:大语言模型Transformer库-Tokenizer组件实践

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…