<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Vue3已經發布很長一段時間了,相信大多數前端人都已經上手把玩過了,其中比較大的一個特性就是setup方法,可以讓我們非常直觀和方便的組合我們的業務邏輯和hooks。在setup裡面返回的變數可以直接在template裡面使用。大多數情況下,我們的大部分邏輯都集中在setup方法裡面,所以官方提供了一個實驗性的寫法,直接在script裡面寫setup的內容,即:setup script。
我們之前的元件可能是這樣的:
<template> <div class="flex items-center justify-center h-screen bg-gray-50"> <Card>{{msg}}</Card> </div> </template> <script lang="ts"> import { ref, defineComponent } from "vue"; import Card from "./components/Card.vue"; export default defineComponent({ components: { Card, }, setup() { const msg = ref("setup script"); return { msg }; } }); </script>
這裡做了兩件事,一個是匯入並註冊元件,一個是匯出一個字串給template使用。
啟用setup script之後是這樣的:
<template> <div class="flex items-center justify-center h-screen bg-gray-50"> <Card>{{msg}}</Card> </div> </template> <script lang="ts" setup> import { ref } from "vue"; import Card from "./components/Card.vue"; const msg = ref("setup script"); </script>
這裡省去了元件的註冊步驟,也沒有顯式的匯出變數的動作。
雖然是實驗性功能,但還是開箱即用,你只需要在script上設定setup即可。
在setup script裡面定義的所有變數都會自動匯出。非常方便
<script lang="ts" setup> import { ref } from "vue"; const msg = ref("setup script"); const handlerClick = () => { console.log("on click"); }; </script>
所有的元件匯入即可自動註冊:
<script lang="ts" setup> import Card from "./components/Card.vue"; import Button from "./components/Button.vue"; </script>
使用props需要用到defineProps來定義,具體用法跟之前的props寫法類似:
<script lang="ts" setup> import { defineProps } from "vue"; const props = defineProps(['title', 'content']); </script>
給props定義型別:
const props = defineProps({ title: String, content: { type: Stirng, required: true } });
使用TS的註解的方式:
defineProps<{ title?: string content: string }>();
使用defineEmit對元件裡面使用到的事件進行驗證和定義:
const emit = defineEmit(['onHeaderClick']) emit('onHeaderClick', 'params') // 對事件進行驗證 const emit = defineEmit({ onHeaderClick: ({title}) => { if(!title) { console.warn('Invalid title') return false } return true } })
具體的用法跟之前的一樣。
使用useContext獲取上下文:
import { useContext } from 'vue' const { slots, attrs } = useContext()
獲取到的slots attrs跟之前的setup裡面的是一樣的。
指令跟元件一樣,匯入自定註冊:
<script setup> import {color} from './v-color' </script> <template> <div v-color /> </template>
匯入的color自動對映為指令v-color
<script setup> import {color as superColor} from './v-color' </script> <template> <div v-super-color /> </template>
setup script程式碼看起來簡單了很多,開發效率大大的提高。但是很遺憾它還只是一個實驗性功能,提出的時間是:2020-10-28,至今還未釋出。
不過好訊息是:
不管怎麼樣,小夥伴可以在本地體驗一波,會整體提升幸福感。
記住不要在生產環境使用哦。
到此這篇關於Vue3 - setup script使用的文章就介紹到這了,更多相關Vue3 - setup script使用內容請搜尋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