- 需求的场景描述(希望解决的问题)
slot算是小程序框架中最能提高开发效率的功能之一了,但相较现有成熟框架,仍有不足,例如:
1.当没有为插槽提供内容时,无法设置默认内容
2.无法将组件内的数据传递给插槽,无法配合for使用
- 希望提供的能力
slot允许设置默认内容
<slot name="before">
<text>默认内容<text>
</slot>
slot允许传递数据
<view wx:for="{{list}}">
<slot data="{{item}}"></slot>
</view>
1、slot 支持默认内容这个已经在排期中
2、slot 本身应该是属于父组件的一部分,它能使用的数据是父组件数据而不是子组件数据。如果要定制子组件的“某些部分”的话,应该不是使用 slot,而是使用抽象节点吧:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/generics.html
可是抽象节点要定制组件的“某些部分”的话,必须将这一部分做成组件,而且还要在组件的usingComponents字段声明,感觉并不是真正意义上的“自定义组件模板中的一些节点”,如果需要定制的部分不包含自己的逻辑,仅仅是定义wxml结构而已。如果将每一种可能出现的结构都做成组件,不仅多此一举,写出来的组件耦合度也过高。
例如我有个tab选项卡组件,接受一个数组,数组中每个对象都有选项卡标签,子标签,图标,颜色等等信息,组件内使用for循环slot生成所有选项卡项,使用组件时通过slot就能定义子项的模板,如果slot能使用组件内for循环当前项的数据的话,就可以轻松的决定展示哪些信息,以什么形式展示,就像vue的作用域插槽,或许这才是真正意义上的"自定义组件模板中的一些节点"吧,使用场景还是挺多的,希望官方考虑一下。
我们目前的设计是尽量遵从 webcomponents 规范来的:https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Slots-Proposal.md
你这个需求本身也是耦合了子组件的数据来进行渲染,而不是用当前组件的数据来渲染,也就是说依赖外部数据结构。就目前来说,我们应该暂时不会去考虑这个需求的。
就是slot支持for循环是支持不了的是吗
封装了一半,看到这个凉了半截
话说现在有作用域插槽的概念了吗?
话说,第二个问题,现在有解决方案了么/?
4年了,还没解决.....
3年半了,还没解决……