sonicsunsky
sonicsunsky
  • 发布:2021-11-24 17:24
  • 更新:2022-01-22 14:25
  • 阅读:3083

uni-app vue3 微信小程序端不支持provide和inject

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: Mac big sur 11.6.1

HBuilderX类型: Alpha

HBuilderX版本号: 3.2.15

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

基础库版本号: 2.21.0

项目创建方式: 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= [] >, 而且在真机上微信小程序会直接报错

2021-11-24 17:24 负责人:无 分享
已邀请:
132liyh

132liyh

和版本有关~

  • sonicsunsky (作者)

    都是最新的版本呢

    2021-11-25 13:53

  • 132liyh

    回复 sonicsunsky: 就是最新的不行

    2021-11-29 09:24

  • 132liyh

    回复 sonicsunsky: "vue": "^3.0.0",

    "vuex": "^4.0.0"


    试试这个版本的

    2021-11-29 09:25

  • sonicsunsky (作者)

    回复 1***@sina.com: 是使用Hbuildx直接创建的vue3项目,没有使用cli创建,使用的应该是hbuilderx内置的vue3版本

    2021-11-29 11:25

0veUI

0veUI - 前端开发、UID、UED

小程序中 provide和inject 传参正常,就是调试器有每个参数的飘红信息 如:[Vue warn]: Injection "bg" not found
found in ---> …

把我这强迫症搞得蓝瘦屎… 感觉再大的姨妈巾都止不住的样子!

  • p***@sina.com

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

    2022-06-21 23:09

0veUI

0veUI - 前端开发、UID、UED

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

Tn_i

Tn_i

我的情况是配置式的可以,setup里的inject拿到是undefined。

环境:

  • h5端
  • cli 创建的 vue3项目
  • vue: "^3.2.27"
  • vuex: "^4.0.2"
  • @dcloudio/uni-app: "^3.0.0-alpha-3030820220114004"
  • Tn_i

    更正: setup里可以使用inect,但是要注意作用域的问题!我写在了一个异步操作后就在获取,就会拿到undefined

    2022-01-22 15:43

该问题目前已经被锁定, 无法添加新回复