uni-app vue3 微信小程序端不支持provide和inject
uni-app vue3 微信小程序端不支持provide和inject
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | Mac big sur 11.6.1 | HBuilderX |
示例代码:
<!-- src/components/MyMap.vue -->
<template>
<MyMarker />
</template>
<script>
import { provide } from 'vue'
import MyMarker from './MyMarker.vue'
export default {
components: {
MyMarker
},
setup() {
provide('location', 'North Pole')
provide('geolocation', {
longitude: 90,
latitude: 135
})
}
}
</script>
<!-- src/components/MyMarker.vue -->
<template>
{{userLocation}}-{{userGeolocation}}
</template>
<script>
import { inject } from 'vue'
export default {
setup() {
const userLocation = inject('location', 'The Universe')
const userGeolocation = inject('geolocation')
console.log(userLocation, userGeolocation)
return {
userLocation,
userGeolocation
}
}
}
</script>
操作步骤:
- 使用上述代码打印
console.log(userLocation, userGeolocation)
预期结果:
console.log(userLocation, userGeolocation)正常打印出provide提供的值
实际结果:
- 打印
console.log(userLocation, userGeolocation)打印结果为undefined
bug描述:
uni-app vue3 微信小程序端 不支持provide和inject, 打印inject后的结果为undefined,在ide开发工具上有警告提示[Vue warn]: injection “xxx” not found. at <Index vueId="" vueSlots= [] >, 而且在真机上微信小程序会直接报错
更多关于uni-app vue3 微信小程序端不支持provide和inject的实战教程也可以访问 https://www.itying.com/category-93-b0.html
和版本有关~
更多关于uni-app vue3 微信小程序端不支持provide和inject的实战教程也可以访问 https://www.itying.com/category-93-b0.html
都是最新的版本呢
回复 sonicsunsky: 就是最新的不行
回复 sonicsunsky: “vue”: “^3.0.0”, “vuex”: “^4.0.0”
试试这个版本的
回复 1***@sina.com: 是使用Hbuildx直接创建的vue3项目,没有使用cli创建,使用的应该是hbuilderx内置的vue3版本
小程序中 provide和inject 传参正常,就是调试器有每个参数的飘红信息 如:[Vue warn]: Injection “bg” not found
found in —> …
把我这强迫症搞得蓝瘦屎… 感觉再大的姨妈巾都止不住的样子!
换两种方式调试器都姨妈,但是也都正常跑…
我的情况是配置式的可以,setup里的inject拿到是undefined。
环境:
h5端
cli 创建的 vue3项目
vue: “^3.2.27”
vuex: “^4.0.2”
@dcloudio/uni-app: “^3.0.0-alpha-3030820220114004”
更正: setup里可以使用inect,但是要注意作用域的问题!我写在了一个异步操作后就在获取,就会拿到undefined


