<template>
<view class="content">
加载子组件:
<ChildComponent v-if="type === 'abc'" ref="child"/>
当前运行基础库:{{ system.SDKVersion }}
</view>
</template>
<script>
import ChildComponent from './child-component.vue'
export default {
components: {ChildComponent},
data() {
return {
type: '',
system: {}
}
},
onLoad() {
setTimeout(() => {
this.type = 'abc'
}, 100)
const timer = () => {
console.log(this.$refs.child, 'this.$refs.childthis.$refs.childthis.$refs.child')
if (this.$refs.child && this.$refs.child.lifeProxyLoad) {
this.$refs.child.lifeProxyLoad({
type: this.type
})
} else {
setTimeout(() => {
timer()
}, 100)
}
}
timer()
uni.getSystemInfo().then(system => {
this.system = system
console.log(system.SDKVersion, 'SDKVersionSDKVersionSDKVersion')
})
},
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
</style>
- 发布:2023-10-10 10:43
- 更新:2023-10-11 18:06
- 阅读:738
产品分类: uniapp/小程序/字节跳动
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows10版本22H2
第三方开发者工具版本号: 4.1.4
基础库版本号: 3.0.0
项目创建方式: CLI
CLI版本号: 2.0.2-alpha-3090120230927001
示例代码:
操作步骤:
如上述代码,type赋值添加延迟后,childComponent组件可正常展示,但在js中无法通过this.$refs.child获取childComponent组件,目前在抖音最新版,所使用的基础库为3.0.0时可以复现该问题。
如上述代码,type赋值添加延迟后,childComponent组件可正常展示,但在js中无法通过this.$refs.child获取childComponent组件,目前在抖音最新版,所使用的基础库为3.0.0时可以复现该问题。
预期结果:
目前抖音开发工具不能选择3.0.0的基础库,开发工具是正常的,真机最新版抖音异常
目前抖音开发工具不能选择3.0.0的基础库,开发工具是正常的,真机最新版抖音异常
实际结果:
无法通过$refs获取组件,现有业务代码中无法向组件内传值
无法通过$refs获取组件,现有业务代码中无法向组件内传值
bug描述:
抖音最新版使用uniapp,组件中使用ref,如果在v-if中使用了延迟设置的属性来控制,则会导致js中无法获取到ref内容,步骤如下图