小程序自定义组件——组件间通信与事件

组件间通信

组件间的基本通信方式有以下几种。

  • TYML 数据绑定:用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容数据。
  • 事件:用于子组件向父组件传递数据,可以传递任意数据。
  • 如果以上两种方式不足以满足需要,父组件还可以通过 this.selectComponent 方法获取子组件实例对象,这样就可以直接访问组件的任意数据和方法。

监听事件

事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。关于事件的基本概念和用法,参见 事件

监听自定义组件事件的方法与监听基础组件事件的方法完全一致:

示例代码:

<!-- 当自定义组件触发“myevent”事件时,调用“onMyEvent”方法 -->
<component-tag-name bind:myevent="onMyEvent" />
<!-- 或者可以写成 -->
<component-tag-name bindmyevent="onMyEvent" />
Page({
  onMyEvent: function (e) {
    e.detail; // 自定义组件触发事件时提供的 detail 对象
  },
});

触发事件

自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail 对象和事件选项。

type ComponentEventOptions = {
  /**
   * 事件是否冒泡
   */
  bubbles?: boolean;
  /**
   * 事件是否可以穿越组件边界,为 false 时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部
   */
  composed?: boolean;
  /**
   * 是否含捕获阶段
   */
  capturePhase?: boolean;
}
 
type triggerEvent = (
  type: string,
  detail: Record<string, any> = {},
  options?: ComponentEventOptions,
) => void;

示例代码:

<!-- 在自定义组件中 -->
<button bind:tap="onTap">单击这个按钮将触发 “myevent” 事件</button>
Component({
  properties: {},
  methods: {
    onTap: function () {
      var myEventDetail = {}; // detail 对象,提供给事件监听函数
      this.triggerEvent('myevent', myEventDetail);
    },
  },
});

相关推荐

  1. 程序定义组件——组件通信事件

    2024-02-03 11:52:01       41 阅读
  2. 程序定义表格组件

    2024-02-03 11:52:01       18 阅读
  3. 微信程序定义组件

    2024-02-03 11:52:01       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-03 11:52:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-03 11:52:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-03 11:52:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-03 11:52:01       20 阅读

热门阅读

  1. React useEffect使用

    2024-02-03 11:52:01       31 阅读
  2. Debezium发布历史105

    2024-02-03 11:52:01       19 阅读
  3. Linux升级openssh的解决方案

    2024-02-03 11:52:01       29 阅读
  4. CCF-CSP 202209-1 如此编码

    2024-02-03 11:52:01       32 阅读
  5. c++20

    c++20

    2024-02-03 11:52:01      28 阅读
  6. C++20新语法

    2024-02-03 11:52:01       25 阅读
  7. 20240202 大模型快讯

    2024-02-03 11:52:01       27 阅读
  8. github上传代码遇到的问题

    2024-02-03 11:52:01       33 阅读
  9. Linux——用户和用户组管理

    2024-02-03 11:52:01       25 阅读
  10. 查询到List后再进行分页(mybatis-plus

    2024-02-03 11:52:01       30 阅读