使用
子组件通过dispatch方法向组件树上层派发消息。
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Son extends san.Component { static template = ` <div> <button on-click='onClick'>向上传递</button> </div> `;
onClick() { const value = this.data.get('value'); this.dispatch('son-clicked', value); } };
|
消息将沿着组件树向上传递,直到遇到第一个处理该消息的组件,则停止。通过 messages 可以声明组件要处理的消息。messages 是一个对象,key 是消息名称,value 是消息处理的函数,接收一个包含 target(派发消息的组件) 和 value(消息的值) 的参数对象。
1 2 3 4 5 6 7 8 9 10 11 12 13
| class GrandParent extends san.Component { static template = '<div><slot></slot></div>';
static messages = { 'son-clicked': function (arg) { this.data.set('value', arg.value);
} } };
|
示例
See the Pen higher-communication by Swan (@jiangjiu8357) on CodePen.