【Vue3.0】关于 script setup 语法糖的用法

时间:2023-01-12 19:05:54

script setup - 简介

先来看一看官网关于 <script setup> 的介绍:

【Vue3.0】关于 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 、 slotsattrs

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日 --