-
在使用
uniapp
在开发字节抖音小程序时,无论是打包还是调试,在有一些场景下都无法使用$refs
去获取到子组件,一开始我以为是无法在,子组件里面通过$refs
获取孙子组件,因为在父组件中是可以使用的,后面测试总结后,才发现是原来是只要通过v-if
控制的组件,都无法获取到。 -
最后在 github.com/dcloudio/un… 中找到了解决方案,原来是
@dcloudio\uni-mp-toutiao
包出了问题有bug
。 -
经过排查,发现因为抖音
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
,找到这段代码:function initRefs$1 (vm) { const mpInstance = vm.$scope; // /* eslint-disable no-undef */ const minorVersion = parseInt(tt.getSystemInfoSync().SDKVersion.split('.')[1]); if (minorVersion > 16) { initRefs(vm); } else {
修改成下面这段
function initRefs$1 (vm) { const mpInstance = vm.$scope; /* eslint-disable no-undef */ const [majorVersion, minorVersion] = tt.getSystemInfoSync().SDKVersion.split('.'); if (parseInt(majorVersion) > 1 || parseInt(minorVersion) > 16) { initRefs(vm); } else {
原文链接:https://juejin.cn/post/7353073795081142311 作者:卡尔特斯