uni-app 使用V3编译器
uni-app 使用V3编译器
详细问题描述
UniApp使用V3编译器,在onload使用this.$refs.x报错或提示找不到组件,切换为自定义组件模式无此问题
(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)
[内容]
重现步骤
[步骤]
[结果]
[期望]
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]
IDE运行环境说明
项目 | 信息 |
---|---|
IDE版本号 | [IDE版本号] |
windows版本号 | [windows版本号] |
mac版本号 | [mac版本号] |
uni-app运行环境说明
项目 | 信息 |
---|---|
运行端是h5或app或某个小程序? | [运行端是h5或app或某个小程序?] |
运行端版本号 | [运行端版本号] |
项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试 | [项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试] |
编译模式是老模板模式还是新的自定义组件模式? | [编译模式是老模板模式还是新的自定义组件模式?] |
App运行环境说明
项目 | 信息 |
---|---|
Android版本号 | [Android版本号] |
iOS版本号 | [iOS版本号] |
手机型号 | [手机型号] |
模拟器型号 | [模拟器型号] |
附件
[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
[App安装包或H5地址]
[可重现代码片段]
联系方式
[QQ]
更多关于uni-app 使用V3编译器的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
并非Bug,此表现与H5一致。v3的生命周期更加规范,先创建父,后创建子,此时子组件未创建。
更多关于uni-app 使用V3编译器的实战教程也可以访问 https://www.itying.com/category-93-b0.html
请在onReady里边访问this.$refs
这是V3编译器的一个常见问题,主要原因是组件尚未挂载完成时访问$refs导致的。建议的解决方案:
- 使用nextTick延迟访问:
onLoad() {
this.$nextTick(() => {
console.log(this.$refs.x)
})
}
- 或者改用mounted生命周期钩子:
mounted() {
console.log(this.$refs.x)
}
- 如果必须在onLoad中使用,可以添加v-if条件确保组件已渲染:
<component v-if="isMounted" ref="x"></component>
data() {
return {
isMounted: false
}
},
onLoad() {
this.isMounted = true
this.$nextTick(() => {
console.log(this.$refs.x)
})
}