uni-app 字节小程序 provide 全局注入一个js文件 inject接收 在vue实例的 data里面用会报错,在生命周期和methods里面都正常
uni-app 字节小程序 provide 全局注入一个js文件 inject接收 在vue实例的 data里面用会报错,在生命周期和methods里面都正常
产品分类:
uniapp/小程序/字节跳动
PC开发环境操作系统:
Windows
PC开发环境操作系统版本号:
win11
HBuilderX类型:
正式
HBuilderX版本号:
3.99
第三方开发者工具版本号:
4.2.1
基础库版本号:
3.16.0.0
项目创建方式:
HBuilderX
示例代码:
<script>
import myLoginNew from '@/components/my-login-new/my-login-new.vue';
export default {
inject: ['$http', '$api', '$utils','$userUtils', '$tokenUtils'],
components: {
myLoginNew
},
data() {
return {
imgPath: this.$api.imgPath//oss图片路径
}
},
onUnload() {
},
onLoad(e) {
},
onShow() {
console.log('onShow '+this.$api.imgPath);
},
onPageScroll(res) {
},
onReachBottom() {
},
methods: {
},
}
</script>
操作步骤:
直接运行
预期结果:
在data 种能获取到全局注入的js种定义的数据
实际结果:
报错
bug描述:
字节小程序 provide 全局注入一个js文件 inject接收 在vue实例的 data里面用会报错,在生命周期和methods里面都正常
更多关于uni-app 字节小程序 provide 全局注入一个js文件 inject接收 在vue实例的 data里面用会报错,在生命周期和methods里面都正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app 字节小程序 provide 全局注入一个js文件 inject接收 在vue实例的 data里面用会报错,在生命周期和methods里面都正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中使用字节小程序时,如果你想通过 provide
和 inject
实现全局注入并在 Vue 实例的 data
中使用,可能会遇到一些问题。这是因为 data
是在 Vue 实例初始化时被解析的,而 inject
的值可能还没有被注入。
问题分析
在 Vue 实例的 data
中直接使用 inject
的值,可能会导致 data
初始化时 inject
的值还未准备好,从而导致报错。而在生命周期钩子(如 created
、mounted
)和 methods
中使用 inject
的值时,inject
的值已经准备好,因此不会报错。
解决方案
-
在生命周期钩子中初始化数据
你可以将data
中的相关属性初始化为null
或默认值,然后在生命周期钩子中通过inject
的值来更新这些属性。export default { data() { return { myInjectedValue: null, }; }, inject: ['myInjectedValue'], created() { this.myInjectedValue = this.myInjectedValue; }, };
-
使用计算属性
你也可以使用计算属性来获取inject
的值,这样可以在inject
的值变化时自动更新。export default { inject: ['myInjectedValue'], computed: { injectedValue() { return this.myInjectedValue; }, }, };
-
在
methods
中处理逻辑
如果inject
的值只用于某些方法的逻辑,你可以在methods
中直接使用inject
的值,而不需要在data
中存储。export default { inject: ['myInjectedValue'], methods: { doSomething() { console.log(this.myInjectedValue); }, }, };