全栈开发之路——前端篇(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基…

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

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

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] 也将被…

改变 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;属于网络层协议…

Uniapp好看登录注册页面

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

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

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

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

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

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

&#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;大语言模型训练数据集概…

DS:顺序表、单链表的相关OJ题训练

欢迎各位来到 Harper.Lee 的学习小世界&#xff01; 博主主页传送门&#xff1a;Harper.Lee的博客主页 想要一起进步的uu可以来后台找我交流哦&#xff01; 在DS&#xff1a;单链表的实现 和 DS&#xff1a;顺序表的实现这两篇文章中&#xff0c;我详细介绍了顺序表和单链表的…

使用LinkAI创建AI智能体,并快速接入到微信/企微/公众号/钉钉/飞书

​ LinkAI 作为企业级一站式AI Agent 智能体搭建与接入平台&#xff0c;不仅为用户和客户提供能够快速搭建具备行业知识和个性化设定的 AI 智能体的能力&#xff1b;还基于企业级场景提供丰富的应用接入能力&#xff0c;让智能体不再是“玩具”&#xff0c;而是真正能够落地应用…

PHP的数组练习实验

实 验 目 的 掌握索引和关联数组&#xff0c;以及下标和元素概念&#xff1b; 掌握数组创建、初始化&#xff0c;以及元素添加、删除、修改操作&#xff1b; 掌握foreach作用、语法、执行过程和使用&#xff1b; 能应用数组输出表格和数据。 任务1&#xff1a;使用一维索引数…

uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之使用jar包插件

前言 如果你不会编写安卓插件,你可以先看看我之前零基础的文章(uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件), 我们使用第三方包,jar包编写安卓插件 开始 把依赖包,放到某个模块的/libs目录(myTestPlug/libs) 还要到build…

R语言的学习—5—多元数据直观表示

1、数据读取 ## 数据整理 d3.1read.xlsx(adstats.xlsx,d3.1,rowNamesT);d3.1 #读取adstats.xlsx表格d3.1数据 barplot(apply(d3.1,1,mean)) #按行做均值条形图 barplot(apply(d3.1,1,mean),las3) barplot(apply(d3.1,2,mean)) #按列做均值图条形图 barplot(a…

C语言数据结构 ---- 单链表实现通讯录

今日备忘录: "折磨我们的往往是想象, 而不是现实." 目录 1. 前言2. 通讯录的功能3. 通讯录的实现思路5. 效果展示6. 完整代码7. 总结 正文开始 1. 前言 顺表实现通讯录: 点击~ 顺序表实现通讯录 在日常生活中&#xff0c;我们经常需要记录和管理大量的联系人信息&…

【研发管理】产品经理知识体系-组合管理

导读&#xff1a;新产品开发的组合管理是一个重要的过程&#xff0c;它涉及到对一系列新产品开发项目进行策略性选择、优先级排序、资源分配和监控。这个过程旨在确保企业能够最大化地利用有限的资源&#xff0c;以实现其战略目标。 目录 1、组合管理、五大目标 2、组合管理的…

第74天:漏洞发现-Web框架中间件插件BurpSuite浏览器被动主动探针

目录 思维导图 前置知识 案例一&#xff1a;浏览器插件-辅助&资产&漏洞库-Hack-Tools&Fofa_view&Pentestkit 案例二&#xff1a; BurpSuite 插件-被动&特定扫描-Fiora&Fastjson&Shiro&Log4j 思维导图 前置知识 目标&#xff1a; 1. 用…

基于springboot实现公司日常考勤系统项目【项目源码+论文说明】

基于springboot实现公司日常考勤系统演示 摘要 目前社会当中主要特征就是对于信息的传播比较快和信息内容的安全问题&#xff0c;原本进行办公的类型都耗费了很多的资源、传播的速度也是相对较慢、准确性不高等许多的不足。这个系统就是运用计算机软件来完成对于企业当中出勤率…

数据结构-链表OJ

1.删除链表中等于给定值 val 的所有结点。 . - 力扣&#xff08;LeetCode&#xff09; 思路一&#xff1a;遍历原链表&#xff0c;将值为val的节点释放掉 思路二&#xff1a;创建一个新链表&#xff0c;将值不为val的节点尾插到新链表中 /*** Definition for singly-linked …