vue3 script setup

这篇具有很好参考价值的文章主要介绍了vue3 script setup。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解决在使用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>

vue3 script setup

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() 高级用法示例详解文章来源地址https://www.toymoban.com/news/detail-493621.html

到了这里,关于vue3 script setup的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vue3 之 emits & $emit() 讲解 】监听子组件事件、emit事件验证、options写法、composition setup写法

    前言:不懂在父组件里对子组件 @xxxx 声明自定义事件,就不用看本篇文章了。本篇对此内容不做任何说明。这是与 emits 结合使用的必备知识! 场景说明: 组件功能封装:         组件封装了一系列 emit 事件,并返回数据、回调函数等,或单纯执行某个操作后,触发父组

    2023年04月09日
    浏览(43)
  • Vue3实战06-CompositionAPI+<script setup>好在哪?

    Vue 3 的Composition API + 这就把清单功能独立出来,可在任意需要的地方复用。 基于组件去搭建应用,可实现对业务逻辑的复用。如有其他页面也需要用到这功能,直接复用。 然后,就可基于新语法实现清单应用。 把之前的代码移植过来后,使用ref包裹的响应式数据。修改tit

    2024年02月09日
    浏览(28)
  • vue3 script setup 语法糖用了才知道有多爽 (一)

    这里是完整的目录图片,由于整篇文章篇幅太长,拆分成了几篇来展示 vue3 使用的越来越广泛, 公司项目开始使用 vue3 ,在 vue 3.2 之后新加入了 script setup 语法糖,上手开始看项目发现对于语法糖的使用有一些迷惑,特此整理,在整理这些内容的同时查阅了大量的资料,自己在这个过程

    2024年02月16日
    浏览(28)
  • vue3组合式api <script setup> props 父子组件的写法

    父组件传入子组个的变量, 子组件是无法直接修改的, 只能通过 emit的方式, 让父组件修改, 之后子组件更新 父组件的写法没有变, 子组件的写法就有很大的变化了

    2024年02月10日
    浏览(34)
  • 关于 vue3运行报错Internal server error: [@vue/compiler-sfc] <script setup> cannot contain ES 的处理方法

    大致的意思就是 script setup  不能使用ES模块导出 其实问题就出在,给官方给出的方法混用了 一种是: script  标签里面配置  setup 另一种是: export default  类里配置  setup()  方法 两者用一种就行了 第一种  第二种

    2024年02月07日
    浏览(36)
  • vue3-json-schema-form中StringField.vue报错 `<script setup>` cannot contain ES module exports vue/no-e

    vue3-json-schema-form课程中StringField.vue照着打报错 原代码如下: 修改后代码如下: type.ts文件代码片段如下: 主要问题就是说script标签中加上setup,代码块中不能再出现export default,将该部分代码 修改为:

    2024年02月11日
    浏览(25)
  • vue3之setup的基本使用

    setup是一个全新的配置项,值是一个函数,既然是配置项,是否与data、methods是兄弟? 没错,确实是兄弟关系,只不过到了vue3,就不怎么使用data这些配置项,会使用setup,让我为大家简单的介绍一下setup吧! setup是 Composition API ,组件中所用到的数据方法等等均配置在 setup 中

    2024年02月22日
    浏览(33)
  • vue3使用setup代替created

    vue2中的created可使用vue3中的setup()来代替。 setup() :开始创建组件之前,在beforeCreate和created之前执行。创建的是data和method。 如果想要在页面创建时就执行方法, vue2: vue3: vue3使用setup语法糖:

    2024年02月11日
    浏览(40)
  • Vue3 setup中使用$refs

    在 Vue 3 中的 Composition API 中, $refs 并不直接可用于 setup 函数。这是因为 $refs 是 Vue 2 的实例属性,而在 Vue 3 中, setup 函数是与模板实例分离的,不再使用实例属性。 实际工作中确实有需求,在 setup 函数使用$refs,下面有两种方法。 方案一:getCurrentInstance 方案二: ref 在这

    2024年02月12日
    浏览(25)
  • vue3的setup的使用和原理解析

    最近在做vue3相关的项目,用到了组合式api,对于vue3的语法的改进也是大为赞赏,用起来十分方便。对于已经熟悉vue2写法的同学也说,上手还是需要一定的学习成本,有可能目前停留在会写会用的阶段,但是setup带来哪些改变,以及ref,reactive这两api内部实现原理到底是什么,

    2024年02月02日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包