如标题、关于链接:New script setup
(without ref sugar)
<template>
<TopNavbar title="room" />
<div>
{{ no }}
</div>
</template>
<script setup>
import TopNavbar from '@/layout/TopNavbar.vue'
import { defineProps, reactive } from 'vue'
defineProps({
no: String
})
const state = reactive({
room: {}
})
const init = async () => {
// I want use props in this
// const { data } = await getRoomByNo(props.no)
// console.log(data);
}
init()
</script>
<style>
</style>
7条答案
按热度按时间kmynzznz1#
要将props与
<script setup>
一起使用,您需要调用defineProps()
,并将组件prop选项作为参数,这将定义组件示例上的props,并返回一个包含props的reactive
对象,您可以按如下方式使用该对象:如果你正在使用typescript,另一种方法是传递一个type only声明,并从中推断prop类型。优点是你会得到更严格的类型安全,但你不能有默认值。
编辑
现在可以使用仅类型属性的默认值:
7rtdyuoh2#
使用Vue-3.1及更高版本的功能,答案非常简单:
x1月0n1x日
MyView.vue
另请参阅文档:声明道具或附加选项
stszievb3#
我读了“新
script setup
“,找到了答案首先,使用变量保存
defineProps
那就用它
这都是代码:
qcuzuvrc4#
无需显式调用
withDefaults
af7jpaap5#
编辑:此答案已过时。RFC已更改为使用
defineProps(..)
,如果使用SFC,则会自动导入defineProps(..)
。根据正在进行的RFC,
setup
标签可以有一个字符串,在这里您可以定义您希望拥有的上下文,如下所示:这些参数与
setup()
方法接收的参数相同。yptwkmov6#
使用Typescript,您可以使用两种语法定义您的道具:
1.第一个语法
1.第二种语法
此语法仅支持:
57hvy0tb7#
如果您使用
Typescript
,并且还想添加默认值,则可以使用以下语法。