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

11 回复

和版本有关~

更多关于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 —> …
把我这强迫症搞得蓝瘦屎… 感觉再大的姨妈巾都止不住的样子!

后面解决了吗,我H5也遇到这个问题了

换两种方式调试器都姨妈,但是也都正常跑…

我的情况是配置式的可以,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

回到顶部