uni-app在抖音小程序中 onshow 拿不到ref

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app在抖音小程序中 onshow 拿不到ref

项目信息 详情
产品分类 uniapp/小程序/字节跳动
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 11
HBuilderX类型 正式
HBuilderX版本号 3.96
第三方开发者工具版本号 4.1.6
基础库版本号 3.2.0.9
项目创建方式 HBuilderX

示例代码:

onShow() {  
    console.log(this.$refs)  
    this.$refs.mypage.getMypageData()  
}

操作步骤:

页面onshow方法里获取组件refs实例,为空对象{},微信小程序上没问题

预期结果:

抖音跟微信一样,都可以拿到

实际结果:

抖音不行,微信可以

bug描述:

页面onshow方法里获取组件refs实例,为空对象{},微信小程序上没问题


4 回复

在 onReady 里获取。


页面 onready 能拿到,但是拿到页面组件的ref之后 ,再去组件中通过 this.$refs 拿组件内部子组件的ref实例还是拿不到

回复 1***@qq.com: 能描述下具体需求吗

uni-app 中,如果你在抖音小程序中遇到 onShow 生命周期钩子中无法获取到 ref 的情况,可能是由于组件的渲染时机问题。onShow 生命周期钩子是在页面显示时触发的,但此时组件的 ref 可能还未被正确绑定或渲染完成。

解决方案

  1. 使用 nextTick: 你可以使用 this.$nextTick 来确保在 DOM 更新后再获取 refnextTick 会在下一次 DOM 更新循环结束之后执行回调函数,确保你获取到的 ref 是已经渲染完成的。

    onShow() {
      this.$nextTick(() => {
        const myRef = this.$refs.myRef;
        if (myRef) {
          // 在这里操作 myRef
        }
      });
    }
  2. 使用 onReady 生命周期: 如果你需要在组件完全渲染完成后进行操作,可以使用 onReady 生命周期钩子。onReady 是在页面初次渲染完成时触发的,此时组件的 ref 应该已经可用。

    onReady() {
      const myRef = this.$refs.myRef;
      if (myRef) {
        // 在这里操作 myRef
      }
    }
  3. 检查 ref 的绑定: 确保你在模板中正确绑定了 ref。例如:

    <view ref="myRef">这是一个视图</view>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!