我有三个组件:Form
、Card
和Button
。
首先,我的Button.vue
组件:
<template>
<div>
<slot v-bind="{ text }">
<button>{{ text }}</button>
</slot>
</div>
</template>
<script setup>
const props = defineProps({
text: {
type: String,
required: true
}
});
</script>
字符串
下面是我的Card.vue
组件:
<template>
<Button text="{ text }">
<template #default="{ text }">
<button>{{ text }}</button>
</template>
</Button>
</template>
<script setup>
import Button from './Button.vue'
const props = defineProps({
text: {
type: String,
required: true
}
});
</script>
型
最后,这是我的Form.vue
组件:
<template>
<div>
<Card text="Some text">
<template #default="{ text }">
</template>
</Card>
</div>
</template>
<script setup>
import Card from './Card.vue'
</script>
型
我的问题是,如何将文本从Form.vue
传递到Button.vue
子组件?
2条答案
按热度按时间uujelgoq1#
你的代码实际上是正确的。但是,如果你想在HTML属性中传递一个变量给组件,而不是使用
text=
,你应该使用:text=
。而且
Card.vue
和Button.vue
属性都需要String,而不是传递{ }
对象。因此,传递特定字符串而不是对象,如下所示::text="myVariableWithStringValue"
个Card.vue
字符串
Form.vue
型
fwzugrvs2#
Vue3 SFC Playground
看起来你过度使用了组件和插槽 prop ,你可以只使用命名插槽:
App.vue
字符串
Card.vue:
型
Button.vue:
型