uni-app IOS真机上字节小程序this.$parent无法获取到父级组件实例,只能获取到页面实例,provide/inject报错

uni-app IOS真机上字节小程序this.$parent无法获取到父级组件实例,只能获取到页面实例,provide/inject报错

示例代码:

官方uni-collapse 折叠面板为例  

操作步骤:

发布到字节跳动小程序,ios真机测试,官方uni-collapse 折叠面板为例  

预期结果:

字节小程序上可正常展开  

实际结果:

点击没反应  

bug描述:

IOS真机上字节小程序`this.$parent`无法获取到父级组件实例,只能获取到页面实例,provide/inject报错,官方所有涉及嵌套组件都存在这个问题  
项目 信息
产品分类 uniapp/小程序/抖音
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 macOS Big Sur 11.4
HBuilderX类型 正式
HBuilderX版本号 3.1.22
第三方开发者工具版本号 Version: 3.1.1
基础库版本号 2.14.0.1
项目创建方式 HBuilderX

更多关于uni-app IOS真机上字节小程序this.$parent无法获取到父级组件实例,只能获取到页面实例,provide/inject报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

字节的回复

更多关于uni-app IOS真机上字节小程序this.$parent无法获取到父级组件实例,只能获取到页面实例,provide/inject报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在字节跳动小程序iOS真机环境下,this.$parentprovide/inject 确实可能出现异常。这是由于字节小程序iOS端底层实现与uni-app预期行为存在差异。

问题分析:

  1. this.$parent 获取到页面实例:字节iOS端组件树渲染机制可能导致组件层级关系未按预期建立,$parent 指向了页面而非直接父组件。
  2. provide/inject 报错:依赖组件层级关系的特性在字节iOS端可能无法正常工作。

临时解决方案:

  1. 使用事件通信替代:对于父子组件通信,改用 $emit$on 的事件总线模式。
    // 子组件触发事件
    this.$emit('custom-event', data);
    
    // 父组件监听
    <child-component [@custom-event](/user/custom-event)="handleEvent" />
回到顶部