uni-app 字节跳动小程序 父组件调不到子组件的方法
uni-app 字节跳动小程序 父组件调不到子组件的方法
操作步骤:
子组件方法:
init_popup(page, source) {
var that = this;
if (page != null) that.from_page = page;
if (source != null) that.source = source;
}
父组件调子组件:
<popup ref="popup"></popup>
父组件调用子组件内的方法:
this.$refs.popup.init_popup('lp_detail');
预期结果:
正常打印
实际结果:
vendor.js:94 TypeError: Cannot read property 'init_popup' of undefined
bug描述:
uniapp 自定义组件,在微信小程序下,父组件调用子组件的方法可以正常调用。在字节跳动小程序下报Cannot read property ‘init_popup’ of undefined。
组件名:popup
子组件方法:
init_popup(page, source) {
var that = this;
if (page != null) that.from_page = page;
if (source != null) that.source = source;
}
父组件调子组件:
<popup ref="popup"></popup>
父组件调用子组件内的方法:
this.$refs.popup.init_popup('lp_detail');
| 项目信息 | 详细信息 |
|---|---|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win7 专业版 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.2.2 |
| 第三方开发者工具版本号 | 3.1.4 |
| 基础库版本号 | 2.22 |
| 项目创建方式 | HBuilderX |

更多关于uni-app 字节跳动小程序 父组件调不到子组件的方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
在线等
这个问题是由于字节跳动小程序中组件渲染时机与微信小程序不同导致的。在字节跳动小程序中,$refs 可能在组件还未完全初始化时就被访问,导致引用为 undefined。
解决方案:
-
使用
nextTick延迟调用
在父组件中,将调用子组件方法的代码包裹在this.$nextTick中,确保子组件已渲染完成:this.$nextTick(() => { this.$refs.popup.init_popup('lp_detail'); }); -
使用
v-if控制组件渲染
如果子组件的渲染依赖于某些条件,可以使用v-if确保组件在需要时才渲染,并在渲染后调用方法:// 在父组件中 data() { return { showPopup: false }; }, methods: { callPopupMethod() { this.showPopup = true; this.$nextTick(() => { this.$refs.popup.init_popup('lp_detail'); }); } }模板中:
<popup ref="popup" v-if="showPopup"></popup>

