Vue-Setup

一、setup概述

小小提示:vue3中可以写多个根标签。

 Person.vue中内容

<template><div class="person"><h2>姓名:{{name}}</h2><h2>年龄:{{age}}</h2><!--定义了一个事件,点击这个按钮之后,调用 changeName方法--><button @click="changeName">修改名字</button> <button @click="changeAge">增加年龄</button><button @click="showTel">查看联系方式</button></div>
</template><script lang="ts">export default{name:'Person', //组件的名字//vue2 选项式 API 写法// data(){//     return{//         name:'张三',//         age:18,//         tel:'13888888888'//     }// },//vue2 选项式 API 写法// methods:{//     showTel(){//         alert(this.tel)//     },//     changeName(){//         this.name = 'zhang-san'//     },//     changeAge(){//         this.age += 1//     }// },//vue3 组合式API 写法//setup 比 beforeCreate 还要优先beforeCreate(){console.log('beforeCreate')},setup(){console.log('setup')// 数据 // 直接这样写数据,模板里面是不能使用的,得通过return把数据交出去// 但此时数据不是响应式的let name = '张三'let age = 18let tel = 13888888888// 方法//vue3中 不能在 setup函数 中使用 this关键字,在 vue3中的setup函数中,this是undefined//这些函数也是需要去 return 交出去的。function changeName(){name = 'zhang-san' //name确实是 修改了,但 name不是响应式的console.log(1,name)} function changeAge(){age += 1console.log(2,age) //age确实是 修改了,但 age不是响应式的} function showTel(){alert(tel)} //return{xxx,xxx}  //代表把数据给交出去,显露出去// return{a:name,b:age}  //到外面的插值语法中,就用a、b// return{name:name,age:age} //如果是这样的写法,可以简写 return{name,age}return{name,age,changeName,changeAge,showTel}}}
</script><style scoped>.person{background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;}button{margin: 0 5px;}
</style>

知识点总结:

       1、vue2的选项式API可以和vue3的组合式API一块使用。

       2、vue3中不能在setup函数中使用this关键字,在 vue3中的setup函数中,this是undefined。

       3、在setup中定义数据、方法,得通过return把这些数据和方法返回出去。

       4、在setup中直接定义的数据,不是响应式的。

       5、return{name:name,age:age} 如果是这样的写法,可以简写 return{name,age}。

       6、setup函数 比 beforeCreate函数 还要优先。

setup其他知识点: 

data中能够读取setup中的数据

setup中不能读取data中的数据

setup 比 data执行的要早

            // setup的返回值也可以是一个渲染函数。// return function(){//     return '哈哈哈哈'// }// 简写形式return ()=> '哈哈'  

 效果:直接返回页面,直接渲染,和 template 没什么关系了。

二、setup的语法糖 

<template><div class="person">测试:{{a}}</div>
</template><!-- 这里面的东西相当于是写 setup函数 里面的东西了 而且还会自动 return -->
<script setup lang="ts">let a = '你好'
</script>

如果不借助插件的话,这里得有两个<script>标签。 

<!-- 这个函数如果没有写 那么组件的名字就默认是文件的名字 -->
<script lang="ts">export default{name:'Person'//组件的名字}
</script><!-- 这里面的东西相当于是写 setup函数 里面的东西了 而且还会自动 return -->
<script setup lang="ts">let a = '你好'
</script>

安装插件合并以上的两个标签

在终端输入以下的命令:

在vite.config.ts文件中进行配置 

重启项目:

此时就可以这样写: 

<script setup lang="ts" name="Person567">let a = '你好'
</script>

效果,组件的名字可以自己定义。

总结:

       如果不借助插件的话,需要使用两个script 标签,并且相当于 setup函数的script标签中,得写上setup和lang="ts"。而安装好插件之后,可以只定义一个script标签,在这一个script 标签中,通过name="xxx",来定义组件的名字。 


power by 尚硅谷 

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

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

相关文章

SpringCloud 和 Linux 八股文第三期五问五答

SpringCloud 和 Linux 八股文第三期五问五答 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;Linux常用命令 2&#xff09;如何查看测试项目的日志 一…

docker搭建minio集群,集群分享文件URL踩坑问题

一、环境准备 3台机器&#xff0c;Ip地址依次为IP1,IP2,IP3二、设置服务器时间同步 Minio集群需要各个节点的时间保持同步&#xff0c;使用NTP作为时间同步服务&#xff0c;这里以Minio-1&#xff08;IP1&#xff09;为上游服务器&#xff0c;其它2个节点为下游服务器&#x…

【YOLO系列】yolo V1 ,V3,V5,V8 解释

文章目录 yolo V1 模型结构图通道数 的 物理意义是什么&#xff1f;输出 7730 怎么理解&#xff1f;YOLO v1 损失函数LOSS yolo V3yolo V5yolo V8 视频来源&#xff1a;https://www.bilibili.com/video/BV13K411t7Zs/ AI视频小助理 一、YOLO系列的目标检测算法&#xff0c;其中…

idea 出现Cannot resolve symbol ‘springframework‘解决方法

Maven手动重新加载 1&#xff09;File–>Invalidate Caches / Restart… 清理缓存&#xff0c;重启idea客户端 2&#xff09;File–>Maven–>Reload project重新从maven中加载工程依赖的组件

zabbix通过自动发现-配置监控项、触发器(小白教程)

自动发现配置参考链接&#xff08;不小白&#xff0c;不友好&#xff09; zabbix-get介绍 1配置 zabbix server&#xff1a;版本7&#xff08;不影响&#xff09;,IP地址&#xff1a;192.168.0.60zabbix agent&#xff1a;版本agent1&#xff08;不影响&#xff09;&#xff…

ES6之Reflect详解

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

LSTM Siamese neural network

本文中的代码在Github仓库或Gitee仓库中可找到。 Hi, 你好。我是茶桁。 大家是否还记得&#xff0c;在「核心基础」课程中&#xff0c;我们讲过CNN以及LSTM。 卷积神经网络&#xff08;CNN&#xff09;已经在计算机视觉处理中得到广泛应用&#xff0c;不过&#xff0c;2017年…

对比学习简介

1. 引言 在本教程中&#xff0c;我们将介绍对比学习领域中的相关概念。首先&#xff0c;我们将讨论这种技术背后相关的理论知识&#xff1b;接着&#xff0c;我们将介绍最常见的对比学习的损失函数和常见的训练策略。 闲话少说&#xff0c;我们直接开始吧&#xff01; 2. 举…

MP4文件中mvhd容器中的“下一个track ID”字段的作用是什么?(下一个轨道id)(新轨道id)

文章目录 mvhd容器中有以下字段其中有个“下一个track ID”字段不知道是干什么用的&#xff0c;它被放在这个mvhd容器的最后“下一个track ID”什么是“下一个track ID”“下一个track ID”的作用唯一性标识轨道管理 “下一个track ID”的必要性命令/代码演示 新轨道ID的含义和…

HarmonyOS4.0系统性深入开发10卡片事件能力说明

卡片事件能力说明 ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互&#xff0c;当前支持router、message和call三种类型的事件&#xff0c;仅在卡片中可以调用。 接口定义&#xff1a;postCardAction(component: Object, action: Object): void 接口…

ES6之生成器(Generator)

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

穷举vs暴搜vs深搜vs回溯vs剪枝

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;全排列&#x1f449;&#…