uni-app 抖音小程序provide/inject传值无效
uni-app 抖音小程序provide/inject传值无效
操作步骤:
- 父组件provide数据给子组件
onMounted(() => provide('test23', '咋不行'));
预期结果:
- 子组件通过inject获取数据,应该获取到而没有获取到
onMounted(() => { attributeGroupContext.value = inject('test23'); });attributeGroupContext.value = '咋不行'
实际结果:
- 就是不行,没有报错,inject出来没有数据。
attributeGroupContext.value = undefined
bug描述:
- 抖音小程序provide/inject传值无效,之前3.0的版本,使用onMounted包一层可以将就用,升级到4.0后就不行了。
- 版本从3.0.0-3090620231104002 升级到 3.0.0-4060620250520001,抖音父子组件传值直接失效。
| 信息类型 | 信息内容 |
|---|---|
| 产品分类 | uniapp/小程序/抖音 |
| PC开发环境 | Windows |
| PC开发环境版本 | Windows 11 专业版 |
| 第三方工具版本 | v4.4.1 |
| 基础库版本 | 3.73.0.4 |
| 项目创建方式 | CLI |
| CLI版本 | 3.0.0-4060620250520001 |

更多关于uni-app 抖音小程序provide/inject传值无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
hello, 请提供一下一个可以复现的测试项目
更多关于uni-app 抖音小程序provide/inject传值无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没法提供呀,公司的项目,线上用的也是3.0的版本
回复 青色: 你可以新建一个项目提供一下,能复现即可
经测试,具有provide/inject传值的组件,在组件中使用不行,在页面中直接使用可以。
我尝试运行了你的代码,看起来与你给出的结果不一致的
不一致,是有那些地方有调整吗
你发的代码我原封不动运行的
回复 DCloud_UNI_yuhe: 很奇怪了,我其他几个同事运行出来和我的一样就没有显示
回复 DCloud_UNI_yuhe: 可以的话,多找个人试一下呢。也可以确认一下node_modules中插件的版本,我们跑出来就是不行,暂时只能用3.0.0-3090620231104002对抖音进行打包了
回复 青色: 你新建一个项目运行代码看看呢,排除你项目中其它的影响因素看看
回复 DCloud_UNI_yuhe: 新建项目也试了,还是不行,我不知道你哪里为什么可以
那这个还挺恶心的,我只有切回3.0.0-3090620231104002才是正常的,本地也是直接yarn了之后直接run的。
本地相关信息:
windows: Windows 11 专业版
node: v20.12.2
yarn: v1.22.22
vscode: v1.101.2
抖音开发工具:v4.4.1
node版本升级到v22.11.0,依然没用
在 uni-app 抖音小程序中,provide/inject 在 onMounted 中调用可能导致数据传递失败,因为 onMounted 是组件挂载后的生命周期,而 provide 应在 setup 阶段或 onBeforeMount 中执行,以确保数据在子组件初始化时可用。
建议将 provide 移到 setup 函数中:
setup() {
provide('test23', '咋不行');
}
如果数据依赖响应式状态,使用 ref 或 reactive 包装:
const testValue = ref('咋不行');
provide('test23', testValue);
子组件的 inject 调用也应在 setup 中:
setup() {
const attributeGroupContext = inject('test23');
return { attributeGroupContext };
}


