uniapp打包字节抖音小程序使用$refs报错解决办法

最近在做uniapp打包小程序的时候,发现uniapp打包抖音小程序后,组件使用的ref定义后,在this.$refs中都获取不到组件的实例(这里用开发者工具是没问题的,需要在真机调试),于是乎就开始了各种搜索,找解决方案。
1、首先是查的抖音小程序的官网生命周期顺序

上图是抖音官网的组件加载顺序生命周期图。
按照上图,我把所有卸载onLoad方法中的相应数据都放到了onReady中,然后真机测试依然是无法拿到组件的实例获取的依然是undefined。
于是乎想到是不是可以加上了this.$nextTick在这个方法里边获取,经过一番测试还是不行。

然后就去uniapp官网查找,最后查到了这个解决方案:

https://github.com/dcloudio/uni-app/pull/4555

问题描述
抖音 App 版本为 27.2.0 的抖音小程序,v-if 判断的 ref 组件,无法通过 this.$refs 拿到组件实例,如果是抖音App 27.1.0 版本的话,是正常的。

补充信息

经过排查,发现因为抖音App 27.2.0 版本的 SDKVersion 为 3.0.0,在 initRefs 方法中,对 selectAllComponents API 做了一个兼容处理:

1、如果使用的是HBuilder工具开发直接升级工具为最新版就可以。
2、如果使用的是命令行cli进行开发的话,需要更改一下uniapp打包抖音的插件

我们需要找到如下目录
node_modules\@dcloudio\uni-mp-toutiao\dist\index.js

找到上边的位置把它替换成下边的样子

    const [majorVersion , minorVersion] = tt.getSystemInfoSync().SDKVersion.split('.');
      if (majorVersion > 1 || minorVersion > 16) {



这样在进行打包就可以正常使用了。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值