【发布时间】:2021-11-15 19:09:07
【问题描述】:
第一个使用 Vue3 的项目,尝试确定指定的插槽是否在给定页面上提供了内容。
在我的模板中我有这个:
<div
:class="{ 'py-20': hasTopContent }"
>
<slot name="top-content" />
</div>
在我的代码中,我有以下内容:
setup (_, { slots }) {
const hasTopContent = computed((slots) => {
console.log(slots.topContent);
return slots.topContent && slots.topContent().length;
});
return {
hasTopContent
}
}
上面的console.log 正在返回TypeError: Cannot read properties of undefined (reading 'topContent')。我错过了什么?谢谢!
【问题讨论】:
-
通过执行
computed((slots) =>{ .... }),您正在创建一个具有slots参数的函数(始终为undefined)。所以computed中的代码使用这个参数而不是父作用域中的slots变量。只需改用computed(() => {....}...