我希望能够为Vue中的嵌套数据集设置默认值,基本上,如果一个键在被解析到组件的数据集中没有值,我希望该值被自动填充。看这个例子就知道了。然而,我的示例在主对象中嵌套了几个键,似乎不起作用。为什么会这样?我做错了什么
测试组件
<script setup lang="ts">
import {defineProps, PropType} from 'vue';
export type KitchenType = {
windows: number;
};
export type DefaultTestType = {
kitchen?: KitchenType;
rooms?: number;
};
const props = defineProps({
dataset: {
type: Object as PropType<DefaultTestType>,
default: () => ({
kitchen: {
windows: 5,
},
rooms: 3,
})
},
});
console.log('IAM DATASET: ', props.dataset);
</script>
调用组件
<DefaultTest :dataset="{
rooms: 5,
}" />
Console.log结果
{ rooms: 5 }
Console.log预期结果
{ kitchen: { windows: 5, }, rooms: 5 }
我正在使用Laravel 9与Vite,Inertia和Vue3,并在vite.config
文件中启用了reactivityTransform: true
,如下所述
如果我不传递任何数据集对象,我将获得所有默认值
3条答案
按热度按时间0sgqnhkj1#
你有没有试过用withDefaults宏来定义默认值的属性
oknwwptz2#
我不认为使用 default 可以做到这一点。虽然你可以创建一个默认的对象,然后使用**Object.assign()**方法创建一个具有默认值的新对象,它将被你将收到的prop覆盖。
qaxu7uf23#
下面是如何将
withDefaults
与默认对象一起使用: