const slots = defineSlots<Slots>()
type SlotFn = (props?: Record<string, unknown>) => any
interface Slots {
default?: SlotFn
pre?: SlotFn
}
function demoMethod() {
const defaultSlots = slots.default?.() || [] // 这里在小程序中得到的时一个 bool 类型, 后面就该报错,在h5环境下时正常的
const preSlots = slots.pre?.() || []
const data = hasPre.value ? preSlots.map((slot: any) => slot.children).join('') : defaultSlots.map((slot: any) => slot.children).join('')
if (!data) {
warning({ msg: '没有找到代码内容' })
return
}
// ...
} - 发布:2025-11-22 02:28
- 更新:2025-11-22 02:28
- 阅读:12
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win11 25h2
第三方开发者工具版本号: vscode 1.106.2
基础库版本号: 3.11.0
项目创建方式: CLI
CLI版本号: 3.0.0-4070620250821001
示例代码:
操作步骤:
使用上述代码
使用上述代码
预期结果:
能和h5环境一样,能正确得到一个对象,用来拿到 slot 下的内容。
能和h5环境一样,能正确得到一个对象,用来拿到 slot 下的内容。
实际结果:
slots.default 是一个 true 的 bool 类型
slots.default 是一个 true 的 bool 类型
bug描述:
如题,vue3,ts setup 模式,定义一个组件,组件内通过 defineSlots 定义了已知类型的 slot,想着组件内,动态获取父组件中对某(或default)设置的slot的内容,以default为例:
const slots = defineSlots<Slots>()
type SlotFn = (props?: Record<string, unknown>) => any
interface Slots {
default?: SlotFn
pre?: SlotFn
}
function demoMethod() {
const defaultSlots = slots.default?.() || [] // 这里在小程序中得到的时一个 bool 类型, 后面就该报错,在h5环境下时正常的
const preSlots = slots.pre?.() || []
const data = hasPre.value ? preSlots.map((slot: any) => slot.children).join('') : defaultSlots.map((slot: any) => slot.children).join('')
if (!data) {
warning({ msg: '没有找到代码内容' })
return
}
// ...
}
上面行 const defaultSlots = slots.default?.() || [] // 这里在小程序中得到的时一个 bool 类型, 后面就该报错,在h5环境下时正常的 为异常部分。
之前跟了帖子:https://ask.dcloud.net.cn/question/213119?notification_id-1564925rf-falseitem_id-308280__answer_id-308280__single-TRUE#!answer_308280
附件?:https://img-cdn-tc.dcloud.net.cn/uploads/answer/20251113/09476ac9f54ef289a991552c126aa459.png