[需求]自定义组件Component实例间通讯
发布于 5 年前 作者 yinfang 16755 次浏览 来自 问答

经常会有一种需求,同一个组件多个实例之间可以进行消息通知,以便维护或传递状态,举两个具体的场景例子:

场景1:类似Radio具有互斥行为的组件。页面会实例化多个这样的组件,选择其中一个,其他的都变成未选中状态

场景2:做一个语音播放条(脑补微信聊天对话框的样子),当某个播放条在播放音频的时候,显示一个动态的小喇叭gif,其他的播放条应该显示一个静态的小喇叭。这个行为的维护,需要在一个播放条播放的时候,通知所有其他播放条:“如果有人是gif,赶快换成静态的图片”

在目前组件的机制下,我不知道如何实现?如果不能实现,希望今后组件能升级支持一下,这个场景还是非常常见的,因为之所以做组件,就是因为两个原因,要么是多个页面要重复用,要么就是同一个页面里要多次用,而同一个页面的情况经常会有维护组件状态关系的需求。

最好的是有个事件广播的机制,这样可以用this关键词来维护;如果实在不行,能不能搞个GlobalData,提供一个setGlobalData方法,然后GlobalData可以作为wxml的数据源输出,这样也可以实现好多需求。

6 回复

@红色星星 同问,希望出个博文分享下,我使用官网的示例,并未获取到custom-li的nodes节点

@红色星星 这种需求如何解决呀, 看文档不懂。。求助

我们现在开放了组件间关系接口,你可以试一下。

@LastLeaf

收到,谢谢~~~

感谢你的建议。

a) 我们有一组未开放的API,可以用于实现类似于内置组件 radio-group / radio 、 form / input 的交互,之后会开放。

b) 全局的广播机制与目前的模块模型设计有冲突,目前不会添加这类功能。其实你可以用behavior来实现这个功能的。

@LastLeaf

你好,非常感谢,用behavior搞定了!!!

现在就等小程序版本库升级修复那几个BUG了,我们把之前用template拼的大部分模块都组件化了,非常好用!!!

回到顶部