描述错误
插槽属性仅在插槽元素中找到,而不是在元素本身上找到。 Svelte 允许在元素上使用该属性,因此该错误只是有点误导。 可能只有在使用具有足够严格设置的 TypeScript 时才会出现错误。
再现
创建一个具有插槽属性的组件,并在声明该属性的元素上使用该属性(这里是class
用法中的错误):
<Component n={10}>
<div slot="item" let:zebra class={zebra}>Hello {zebra}</div>
</Component>
预期行为
Slot 属性在范围内,不会引发错误。
截图
系统(请填写以下信息):
我们需要在标签周围向上拉 jsx 转换。 所以例如在这个测试中它应该变成
<>{() => { let {thing:{ a }} = __sveltets_instanceOf(Component).$$slot_def['default'];<><Component>
<h1>Hello { a }</h1>
</Component></>}}</>
@dummdidumm谢谢你的修复
我刚刚对此进行了测试,如果let:prop
在使用之后,您仍然会收到一个细小的警告而不是类型错误:
'prop' 未定义 [svelte(missing-declaration)]
示例截图:
但是,无论顺序如何,生成的输出都可以工作。 当然,作为一种解决方法,我可以重新排序属性以消除错误。
这是一个 Svelte 编译器错误,我为此创建了https://github.com/sveltejs/svelte/issues/6009 。