script setup - 简介
先来看一看官网关于 <script setup>
的介绍:
要彻底的了解 setup 语法糖,你必须先明确 setup()
这个 组合式API
官网中对于这一api的介绍是—— 在 setup() 函数中返回的对象会暴露给模板和组件实例。其它的选项也可以通过组件实例来获取 setup() 暴露的属性
1.没有在 <script>
标签后添加 setup 时,你在声明/初始化 响应式 变量或者函数时,每一个都需要在 setup() 的return中进行返回,像这样:
<script> import { ref } from 'vue' export default { setup() { const count = ref(0) // 返回值会暴露给模板和其他的选项式 API 钩子 return { count } } } </script>
当你选择<script setup>
语法糖时,即可免去这一恶心的操作
like this:
<template> <!-- 组件自动注册 --> <Child /> <!-- 变量自动注册 --> {{count}} </template> <script setup> // 注册的组件、变量、函数、方法示例直接暴露给模板 import Child from './Child.vue' // 直接定义 count 无需返回 const count = ref(0) </script>
2.组件核心 API 直接可以使用
类似 props 、 emits 、 slots
和 attrs
等
props
: 通过defineProps指定当前 props 类型,获得上下文的props对象,一般用来定义组件的属性
<script setup> import { defineProps } from 'vue' const props = defineProps({ title: String, }) </script>
父子组件传值的时候用到的 emits
使用defineEmit定义当前组件含有的事件,并通过返回的上下文去执行 emit
<script setup> import { defineEmits } from 'vue' const emit = defineEmits(['change', 'delete']) </script>
小结
在以往的写法中,包括在vue2.0,定义数据和方法,都需要在结尾 return 出去,在能在dom模板中使用。而vue3.0新增的<script setup>
写法中,定义的属性和方法直接暴露给模板和示例组件而省去返回的环节,可以直接使用。
-- 希望本文可以帮助到你 2023年1月12日 --