[Vue] Typescript for Vue3 (defineProps, withDefaults, defineEmits)
Define a component with props and defualt props value
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import fetchCount from '../services/fetchCount'
interface Props {
limit: number,
alertMessageOnLimit?: string
}
const props = withDefaults(defineProps<Props>(), {
alertMessageOnLimit: 'can not go any higher' // default value
})
const count = ref<number | null>(null)
onMounted(() => {
fetchCount((initialCount) => {
count.value = initialCount
})
})
function addCount(num: number) {
if (count.value !== null) {
if (count.value >= props.limit) {
alert(props.alertMessageOnLimit)
}
else {
count.value += num
}
}
}
</script>
<template>
<p>{{ count }}</p>
<p>
<button @click="addCount(1)">Add</button>
</p>
</template>
Component with emits
<script setup lang="ts">
const emit = defineEmits<{
(event: 'add-count', num: number): void
(event: 'reset-count'): void
}>()
</script>
<template>
<p>
<button @click="emit('add-count', 1)">Add</button>
<button @click="emit('reset-count')">Reset</button>
</p>
</template>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2022-11-27 [Typescript] 119. Extreme - Get Readonly Keys
2017-11-27 [Python] Problem with Default Arguments
2017-11-27 [Python] Tuples
2016-11-27 [AngularFire 2] Protect Write Access Using Security Rules
2015-11-27 [Javascript] Array methods in depth - slice
2015-11-27 [ES6] ... spread operator
2015-11-27 [AngularJS] New in Angular 1.5 ng-animate-swap