微信小程序 组件间通信与事件
组件间的基本通信方式有以下几种。
- WXML 数据绑定:用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容数据(自基础库版本 2.0.9 开始,还可以在数据中包含函数)。具体在 组件模板和样式 章节中介绍。
- 事件:用于子组件向父组件传递数据,可以传递任意数据。
- 如果以上两种方式不足以满足需要,父组件还可以通过 this.selectComponent 方法获取子组件实例对象,这样就可以直接访问组件的任意数据和方法。
监听事件
事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。关于事件的基本概念和用法,参见 事件 。
监听自定义组件事件的方法与监听基础组件事件的方法完全一致:
代码示例:
触发事件
自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项:
代码示例:
1 2 3 4 5 6 7 8 9 10 | Component({ properties: {}, methods: { onTap: function(){ var myEventDetail = {} // detail对象,提供给事件监听函数 var myEventOption = {} // 触发事件的选项 this .triggerEvent( 'myevent' , myEventDetail, myEventOption) } } }) |
1 2 3 4 5 6 7 8 9 10 | // 组件 my-component.js Component({ methods: { onTap: function(){ this .triggerEvent( 'customevent' , {}) // 只会触发 pageEventListener2 this .triggerEvent( 'customevent' , {}, { bubbles: true }) // 会依次触发 pageEventListener2 、 pageEventListener1 this .triggerEvent( 'customevent' , {}, { bubbles: true , composed: true }) // 会依次触发 pageEventListener2 、 anotherEventListener 、 pageEventListener1 } } }) |
获取组件实例
1 2 3 4 5 6 7 8 | // 父组件 Page({ data: {}, getChildComponent: function () { const child = this .selectComponent( '.my-component' ); console.log(child) } }) |
1 2 3 4 5 6 7 | // 自定义组件 my-component 内部 Component({ behaviors: [ 'wx://component-export' ], export() { return { myField: 'myValue' } } }) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~