vue3 script setup

news2024/11/23 10:06:39

解决在使用vue 3 composition API(组合式API)时繁琐的问题,比如定义一个方法,模板需要使用该方法,就必须将方法返回,当组件中存在大量方法和属性时就很麻烦。

一、什么是script setup
二、script setup什么作用
1.自动注册子组件
2.属性和方法无需返回
3.支持props、emit、context

一、什么是script setup

script setup是vue3新出的语法糖,使用方法就是在script标签内加上setup
<script setup></script>

二、script setup有什么用

1.自动注册子组件

eg:有两个组件,父组件Father.vue,子组件Child.vue

vue3语法
引入Child组件后,需要在components中注册对应的组件才能使用。

<template>
  <div>
    <h2>我是父组件!</h2>
    <Child />
  </div>
</template>

<script>
	import { defineComponent, ref } from 'vue';
	import Child from './Child.vue'

	export default defineComponent({
		components: {
			Child
		},
		setup() {
			return {
      
			}
		}
	});
</script>

在这里插入图片描述

script setup写法
直接省略注册子组件过程

<template>
  <div>
    <h2>我是父组件!</h2>
    <Child />
  </div>
</template>

<script setup>
	import Child from './Child.vue'
</script>

2.属性和方法无需返回

composition API繁琐是因为需要手动返回模板要用的属性和方法,而在script setup中可以省略这一步。 **vue3语法**
<template>
	<div>
		<h2 @click="ageInc">{{ name }} is {{ age }}</h2>
	</div>
</template>

<script>
	import { defineComponent, ref } from 'vue';

	export default defineComponent({
		setup() {
			const name = ref('CoCoyY1')
			const age = ref(18)
			const ageInc = () => {
				age.value++
			}

			return {
				name,
				age,
				ageInc
			}
		}
	})
</script>

script setup写法

<template>
	<div>
		<h2 @click="ageInc">{{ name }} is {{ age }}</h2>
	</div>
</template>

<script setup>
	import { ref } from 'vue';

	const name = ref('CoCoyY1')
	const age = ref(18)
	const ageInc = () => {
		age.value++
	}
</script>

3.支持props、emit、context

vue3语法

//Father.vue
<template>
	<div>
		<h2>我是父组件!</h2>
		<Child msg="hello" @child-click="childCtx" />
	</div>
</template>

<script>
	import { defineComponent, ref } from 'vue';
	import Child from './Child.vue';

	export default defineComponent({
		components: {
			Child
		},
		setup(props, context) {
			const childCtx = (ctx) => {
				console.log(ctx);
			}
			return {
				childCtx
			}
		}
	})
</script>

//Child.vue
<template>
	<span @click="handleClick">我是子组件! -- msg: {{ props.msg }}</span>
</template>

<script>
	import { defineComponent, ref } from 'vue'

	export default defineComponent({
		emits: [
			'child-click'
		],
		props: {
			msg: String
		},
		setup(props, context) {
			const handleClick = () => {
				context.emit('child-click', context)
			}
			return {
				props,
				handleClick
			}
		},
	})
</script>

script setup写法

//Father.vue
<template>
	<div>
		<h2>我是父组件!</h2>
		<Child msg="hello" @child-click="childCtx" />
	</div>
</template>

<script setup>
	import Child from './Child.vue';

	const childCtx = (ctx) => {
		console.log(ctx);
	}
</script>


//Child.vue
<template>
	<span @click="handleClick">我是子组件! -- msg: {{ props.msg }}</span>
</template>

<script setup>
	import { useContext, defineProps, defineEmit } from 'vue'

	const emit = defineEmit(['child-click'])
	const ctx = useContext()
	const props = defineProps({
		msg: String
	})

	const handleClick = () => {
		emit('child-click', ctx)
	}
</script>

可以成功打印context,其中的attrs、emit、props、slots、expose属性和方法依然可以使用。

setup script语法糖提供了三个新的API来供我们使用:definePropsdefineEmituseContext

defineProps: 用来接收父组件传来的值props。defineEmit: 用来声明触发的事件表。
useContext: 用来获取组件上下文context。

更多☞☞☞
vue3 setup(详细)使用教程
vue3 setup() 高级用法示例详解

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

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

相关文章

flutter 主题色彩管理组件 flex_color_scheme

flutter 主题色彩管理组件 flex_color_scheme 前言 原文 https://ducafecat.com/blog/flutter-flex-color-scheme 平时我们做样式适配关心几个方面: 设计稿颜色 标记尺寸大小、比例 全局修改为主 快速可修改 今天将会介绍一个快速调整主题色彩样式的三方组件 flex_color_schem…

[RocketMQ] NameServer启动流程源码解析 (一)

文章目录 1.NameServer概述2.NamesrvStartup启动入口3.createNamesrvController创建NamesrvController3.1 创建NamesrvController 4.start启动NamesrvController4.1 初始化NettyServer4.1.1 创建NettyRemotingServer4.1.2 registerProcessor注册默认请求处理器4.1.3 启动定时任…

Google C++ Style文档及常用代码规范(一):命名约定、格式、注释

文章目录 Google C Style文档及常用代码规范&#xff08;一&#xff09;&#xff1a;命名约定、格式、注释命名约定通用命名规则文件命名类型命名变量命名常量命名函数命名命名空间命名枚举命名宏命名命名规则的特例 格式注释注释风格文件注释类注释函数注释变量注释类数据成员…

flutter getx nested navigation 嵌套路由

flutter getx nested navigation 嵌套路由 视频 https://youtu.be/SXER4JVBFps 前言 嵌套路由可以用在如购物确认向导界面切换。 使用 getx 实现嵌套路由&#xff0c;需要如下步骤&#xff1a; 通过 Navigator 组件的 key 属性 用 Get.nestedKey(1) 进行标记 onGenerateRoute…

delmia msd学习

在默认打开的结构树中添加一个产品tworobts TwoRobots是新建的一个空产品&#xff0c;并将其插入到resoourceslist下面通过 然后创建一个工位的工作区域 插入机器人 把机器人放在工作区域中,即其子物体 先选要移动的对象&#xff0c;然后选移动到什么地方 Keep positions的意思…

栈的概念和结构以及实现

1. 栈 1.1栈的概念及结构 栈:一种特殊的线性表&#xff0c;其只允许在 固定的一端 进行 插入和删除 元素操作。 进行数据插入和删除 操作的一端称为 栈顶 &#xff0c;另一端称为 栈底 。栈中的数据元素遵守 后进先出 LIFO (Last in First Out) 的原则。 压栈:栈的插入操作叫做…

【带你刷《剑指Offer》系列】【每天40分钟,跟我一起用50天刷完 (剑指Offer)】第一天

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

python:使用Scikit-image对单波段遥感影像进行形状特征提取(morphology)

作者:CSDN @ _养乐多_ 本文将介绍使用Scikit-image对单波段遥感影像做形状特征提取的方法和代码。包括:腐蚀(erosion),膨胀(dilation),开运算(opening),闭运算(closing),形态学梯度(morphological gradient),白帽变换(top hat),黑帽变换(black hat),形…

一、枚举类型——用EnumSet来代替标识

Set 是一种不允许有重复元素存在的集合。enum 要求每个内部成员都是唯一的&#xff0c;因此看起来很像 Set&#xff0c;但是由于无法添加或移除元素&#xff0c;它并不如 Set 那么好用。于是 EnumSet 被引入&#xff0c;用来配合 enum 的使用&#xff0c;以替代传统的基于 int …

计算机启动

按下主机上的 power 键后&#xff0c;第一个运行的软件是 BIOS,BIOS 全称叫 Base Input & Output System&#xff0c;即基本输入输出系统。 &#xff08;8086的1MB内存&#xff09; 地址 0&#xff5e;0x9FFFF 处是 DRAM&#xff0c;顶部的 0xF0000&#xff5e;0xFFFFF&am…

第一章 基础算法(一)—— 快排,归并与二分

文章目录 快排归并排序二分整数二分浮点数二分 快速排序练习题785. 快速排序786. 第k个数 归并排序练习题787. 归并排序788. 逆序对的数量 二分练习题789. 数的范围790. 数的三次方根 有些累了&#xff0c;把这两天做的笔记整理发出 快排 快排的思路&#xff1a; 确定分界点根…

Pandas-DataFrame常用基础知识点总结

注&#xff1a;以下知识点总结是将数据转为DataFrame格式数据的基础之上进行操作的 &#xff08;首先需要做的是将数据转为DataFrame格式&#xff09; DataFrame格式示例&#xff1a; import pandas as pd data {"code": [000008, 000009, 000021, 000027, 00003…

代码随想录二刷 day28 | 回溯 之 93.复原IP地址 78.子集 90.子集II

day28 93.复原IP地址判断子串是否合法 78.子集回溯三部曲 90.子集II 93.复原IP地址 题目链接 解题思路&#xff1a; 切割问题就可以使用回溯搜索法把所有可能性搜出来 回溯三部曲 递归参数 startIndex一定是需要的&#xff0c;因为不能重复分割&#xff0c;记录下一层递归分…

一种数据源切换的实践方案

随着业务的不断深入&#xff0c;我们会碰见很多关于数据源切换的业务场景&#xff0c;数据源切换也是当前最常用的分库后的分流策略方式之一&#xff0c;对于读写职责分离的数据库集群而言&#xff0c;我们在服务层面制定相应的接口与数据库交互的定制化开发&#xff0c;也就是…

云 cloud 高可用系统--在RDS上实现,从原理上不可能保证你100%不丢数据

我写这篇文字&#xff0c;实属无奈&#xff0c;在目前很多企业都依赖云的情况下&#xff0c;数据库的很多事情都是身不由己&#xff0c;发生问题&#xff0c;你查看日志&#xff0c;分析日志可能你连日志都不是全部的&#xff0c;并且想通过程序来过滤这个日志很多情况下都有限…

数据库系统概述——第六章 关系数据理论(知识点复习+练习题)

&#x1f31f;博主&#xff1a;命运之光 &#x1f984;专栏&#xff1a;离散数学考前复习&#xff08;知识点题&#xff09; &#x1f353;专栏&#xff1a;概率论期末速成&#xff08;一套卷&#xff09; &#x1f433;专栏&#xff1a;数字电路考前复习 &#x1f99a;专栏&am…

CMU 15-445 Project #2 - B+Tree(CHECKPOINT #1)

CHECKPOINT #1 一、题目链接二、准备工作三、部分实现1.查找操作2.插入操作3.删除操作 四、评测结果 一、题目链接 二、准备工作 见 CMU 15-445 Project #0 - C Primer 中的准备工作。 三、部分实现 对于B树的节点定义&#xff0c;通过节点类的命名 b_plus_tree_page 不难发现…

linux-centos7操作系统查看系统未挂载的磁盘,挂载磁盘

linux-centos7操作系统查看系统未挂载的磁盘,挂载磁盘 查看当前磁盘空间 根目录 / 下也只有44G,其他目录只有10几G,正式环境肯定不够用 df -h查看硬盘数量和分区情况 fdisk -l查看到/dev/vdb 有500多G了 将/dev/vdb在分出一个区使用 第一步:编辑分区。执行命令fdisk …

pr视频叠加,即原视频右上角添加另外一个视频方法,以及pr导出视频步骤

一、pr视频叠加&#xff0c;即原视频右上角添加另外一个视频方法 在使用pr制作视频时&#xff0c;我们希望在原视频的左上角或右上角同步播放另外一个视频&#xff0c;如下图所示&#xff1a; 具体方法为&#xff1a; 1、导入原视频&#xff0c;第一个放在v1位置&#xff0c;第…

Selenium编写自动化用例的8种技巧

在开始自动化时&#xff0c;您可能会遇到各种可能包含在自动化代码中的方法&#xff0c;技术&#xff0c;框架和工具。有时&#xff0c;与提供更好的灵活性或解决问题的更好方法相比&#xff0c;这种多功能性导致代码更加复杂。在编写自动化代码时&#xff0c;重要的是我们能够…