时间:2023-03-09 12:09:35 | 栏目:vue | 点击:次
vue3最近更新了一个setup语法糖,这两天才看到,使用起来雀食很甜,特发个帖子记录下
// 将 `setup` attribute 添加到 `<script>` 代码块上 // 里面的代码会被编译成组件 `setup()` 函数的内容 // 就是这么简单明了 <script setup> </script>
// 无需使用components,引入即注册,起飞有没有 <script setup> import MyComponent from './MyComponent.vue' </script> <template> <MyComponent /> </template>
// 当使用 `<script setup>` 的时候,任何在 `<script setup>` 声明的顶层的绑定 // (包括变量,函数声明,以及 import 引入的内容) 都能在模板中直接使用 import { ref } from 'vue' <script setup> // 变量 let msg = ref('Hello!') // 函数 function log() { msg.value = "World!"; console.log(msg) } </script> <template> <div @click="log">{{ msg }}</div> </template>
语法糖提供的API
在 <script setup> 中必须使用 defineProps 和 defineEmits API 来声明 props 和 emits
<script setup> const props = defineProps({ foo: String }) </script>
<script setup> const emit = defineEmits(['change', 'delete']) // emit('change', '1111') </script>
如果在父组件中通过ref='xxx’的方法来获取子组件实例, 而且子组件使用了<script setup>, 则子组件的数据需要用defineExpose 的方式导出,否则不会暴露其属性
<script setup> import { ref } from 'vue' const a = 1 const b = ref(2) defineExpose({ a, b }) </script>
<script setup>可以与普通的 <script> 一起使用
<script> // 普通 <script>, 在模块范围下执行(只执行一次) // 声明额外的选项、例如自定义组件名 export default { name: '组件1' } </script> <script setup> // code </script>