支付宝小程序框架 自定义组件·ref获取组件实例

2020-09-18 10:31 更新

1.14.0 版本开始,自定义组件支持使用 ref 获取自定义组件实例,可以使用 my.canIUse('component2') 做兼容。 并且,需要在 IDE 中的 详情 > 项目配置 中,勾选 component2。

  1. // /pages/index/index.js
  2. Page({
  3. plus() {
  4. this.counter.plus();
  5. },
  6. // saveRef 方法的参数 ref 为自定义组件实例,运行时由框架传递给 saveRef
  7. saveRef(ref) {
  8. // 存储自定义组件实例,方便以后调用
  9. this.counter = ref;
  10. },
  11. });
  12. <!-- /pages/index/index.axml -->
  13. <my-component ref="saveRef" />
  14. <button onTap="plus">+</button>

说明

  • 使用ref 绑定 saveRef 之后,会在组件初始化时触发 saveRef 方法。
  • saveRef方法的参数ref为自定义组件实例,由框架传递给saveRef方法。
  • ref 同样可以用于父组件获取子组件的实例。

  1. // /components/index/index.js
  2. Component({
  3. data: {
  4. counter: 0,
  5. },
  6. methods: {
  7. plus() {
  8. this.setData({ counter: this.data.counter + 1 })
  9. },
  10. },
  11. })
  12. <!-- /components/index/index.axml -->
  13. <view>{{counter}}</view>

自定义组件 ref 定义段

自基础库 1.18.0 开始,自定义组件(component2)支持使用 ref 定义段指定调用者传递ref时获取的值。 未使用 ref 定义段时,调用者传递ref获取的值是自定义组件的 this (插件的自定义组件将返回 null)。 使用这个定义段时,将以这个定义段的函数返回值代替。

  1. // 自定义组件内部
  2. // /components/index/index.js
  3. Component({
  4. ref() {
  5. return { key: 'value' }
  6. }
  7. <!-- 使用自定义组件时 -->
  8. <!-- /pages/index/index.axml -->
  9. <my-component ref="saveRef" />
  10. // /pages/index/index.js
  11. Page({
  12. // 此时saveRef 方法的参数 ref 即是 my-component 自定义组件中的 ref 定义段的返回值
  13. saveRef(ref) {
  14. // 存储自定义组件实例,方便以后调用
  15. this.counter = ref; // 等于 { key: 'value' }
  16. },
  17. });
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号