Brick Next 中如何正确传递 slot 内容到自定义构件?
我在用 Brick Next 开发低代码页面时,想把一段 HTML 内容通过 slot 传给自定义的 brick 构件,但发现内容没渲染出来。我试过直接在构件标签里写内容,也检查了构件内部是否用了 <slot></slot>,但还是不行。
这是我在 storyboard 里写的用法:
<my-custom-card>
<div class="card-header">标题</div>
<p>这里是内容</p>
</my-custom-card>
构件内部确实有 <slot></slot>,但页面上完全空白,控制台也没报错,到底哪里出问题了?
首先确认你的构件注册方式是否正确。Brick Next 要求用
defineComponent声明式注册,而不是直接继承 HTMLElement。正确的构件定义应该是这样的:然后重点来了,Brick Next 的 slot 内容需要用特殊的
brick-slot属性标记,而不是直接写在标签里。你的 storyboard 应该改成:为什么这样设计?因为 Brick Next 的渲染引擎需要明确区分哪些是构件的属性,哪些是 slot 内容。那个空的
brick-slot属性就是标记用的。还有几个常见踩坑点:
1. 确保你的构件在 storyboard 的
useBricks里正确引用了2. slot 内容必须包裹在一个根元素里(上面例子中的 div)
3. 如果 slot 有命名,需要同时设置
brick-slot和slot属性如果还是不行,建议检查构件是否正常加载了。可以在构件代码里加个 console.log 调试下。这个机制确实有点反直觉,我第一次用的时候也折腾了好久。