2***@qq.com
2***@qq.com
  • 发布:2023-02-14 10:27
  • 更新:2024-08-20 13:37
  • 阅读:767

【报Bug】 字节小程序provide inject报错

分类:uni-app

产品分类: uniapp/小程序/字节跳动

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows10

HBuilderX类型: 正式

HBuilderX版本号: 3.6.18

第三方开发者工具版本号: 20230117

基础库版本号: 2.78.0.4

项目创建方式: HBuilderX

操作步骤:

provide('value','1');

预期结果:

子组件能够获取到设置的values的值

实际结果:

undefined

bug描述:

父组件设置provide的值在子组件inject获取的时候一直undefined

2023-02-14 10:27 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com (作者)

在app.json已经配置了"usingProvide": true

YUANRJ

YUANRJ

vue2还是vue3?

  • 2***@qq.com (作者)

    vue3 在main.js里面设置app.provide是生效的,在组件内使用显示未定义

    2023-02-14 11:21

  • YUANRJ

    回复 2***@qq.com: 你的用组合式还是选项式api?

    2023-02-14 11:54

  • 2***@qq.com (作者)

    回复 YUANRJ: 组合式

    2023-02-14 14:14

YUANRJ

YUANRJ

感谢反馈,已加分。后续修复

  • 2***@qq.com (作者)

    这个目前有没有临时的解决方案

    2023-02-14 14:24

  • YUANRJ

    回复 2***@qq.com: 你先使用组合式api,在onMounted里进行获取

    2023-02-14 14:45

  • 2***@qq.com (作者)

    回复 YUANRJ: 现在就是用的组合式API获取不到

    2023-02-14 14:57

  • YUANRJ

    回复 2***@qq.com: 在onMounted里进行获取

    2023-02-14 15:16

  • 2***@qq.com (作者)

    回复 YUANRJ: 嗯嗯好的

    2023-02-14 15:29

YUANRJ

YUANRJ

目前字节跳动小程序的组件父子关系初始化较晚,在setup阶段,还没有初始化父子关系,导致无法正常使用provide/inject,
临时解决方案,可以使用 options 方式定义 inject 或延迟获取。

使用options方式,请替换下面附件:
HBuilderX根目录/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-toutiao/dist

  • q***@163.com

    这个@dcloudio/uni-mp-toutiao包有npm地址吗?只能本地替换?

    2024-02-21 18:05

  • YUANRJ

    回复 q***@163.com: 该问题已经修复了,不需要再替换文件。如果有别的问题,可以详细描述下

    2024-02-22 19:40

  • mirari

    回复 YUANRJ: 在最新的版本中遇到了同样的问题,字节小程序中inject取不到值。进入inject源码中查看到,instance.vnode.appContext.provides仅有一个Symbol(pinia)。但是provide确实有执行,感觉是取到了不同的instance上面。但是同样的代码在微信小程序和百度小程序下都是正常的

    2024-07-30 15:19

3***@qq.com

3***@qq.com

这个问题在使用vue2时还是存在,抖音小程序

要回复问题请先登录注册