<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
<script setup>是在單檔案元件 (SFC) 中使用組合式 API的編譯時語法糖。相比於普通的 <script> 語法,它具有更多優勢
要使用這個語法,需要將 setup attribute 新增到 <script> 程式碼塊上
<script setup> console.log('hello script setup') </script>
裡面的程式碼會被編譯成元件 setup() 函數的內容。這意味著與普通的 <script> 只在元件被首次引入的時候執行一次不同,<script setup>中的程式碼會在每次元件範例被建立的時候執行。
頂層的繫結會被暴露給模板
當使用 <script setup> 的時候,任何在 <script setup> 宣告的頂層的繫結 (包括變數,函數宣告,以及 import 引入的內容) 都能在模板中直接使用
<script setup> // 變數 const msg = 'Hello!' // 函數 function log() { console.log(msg) } </script> <template> <div @click="log">{{ msg }}</div> </template>
import 匯入的內容也會以同樣的方式暴露。意味著可以在模板表示式中直接使用匯入的 helper 函數,並不需要通過 methods 選項來暴露它:
<script setup> import { capitalize } from './helpers' </script> <template> <div>{{ capitalize('hello') }}</div> </template>
響應式狀態需要明確使用響應式 APIs 來建立。和從 setup() 函數中返回值一樣,ref 值在模板中使用的時候會自動解包:
<script setup> import { ref } from 'vue' const count = ref(0) </script> <template> <button @click="count++">{{ count }}</button> </template>
<script setup>範圍裡的值也能被直接作為自定義元件的標籤名使用:
<script setup> import MyComponent from './MyComponent.vue' </script> <template> <MyComponent /> </template>
動態元件
由於元件被參照為變數而不是作為字串鍵來註冊的,在 <script setup> 中要使用動態元件的時候,就應該使用動態的:is來繫結
<script setup> import Foo from './Foo.vue' import Bar from './Bar.vue' </script> <template> <component :is="Foo" /> <component :is="someCondition ? Foo : Bar" /> </template>
遞迴元件
import { FooBar as FooBarChild } from './components'
名稱空間元件
<script setup> import * as Form from './form-components' </script> <template> <Form.Input> <Form.Label>label</Form.Label> </Form.Input> </template>
<script setup> const vMyDirective = { beforeMount: (el) => { // 在元素上做些操作 } } </script> <template> <h1 v-my-directive>This is a Heading</h1> </template>
<script setup> // 匯入的指令同樣能夠工作,並且能夠通過重新命名來使其符合命名規範 import { myDirective as vMyDirective } from './MyDirective.js' </script>
在 <script setup> 中必須使用 defineProps 和 defineEmits API 來宣告 props 和 emits ,它們具備完整的型別推斷並且在 <script setup> 中是直接可用的
<script setup> const props = defineProps({ foo: String }) const emit = defineEmits(['change', 'delete']) // setup code </script>
<script setup> import { ref } from 'vue' const a = 1 const b = ref(2) defineExpose({ a, b }) </script>
<script setup> import { useSlots, useAttrs } from 'vue' const slots = useSlots() const attrs = useAttrs() </script>
<script setup> 中可以使用頂層 await。結果程式碼會被編譯成 async setup()
<script setup> const post = await fetch(`/api/post/1`).then(r => r.json()) </script>
到此這篇關於vue3中單檔案元件<script setup>詳解的文章就介紹到這了,更多相關vue3單檔案元件<script setup>內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45