scxp
scxp
  • 发布:2019-03-11 22:19
  • 更新:2019-08-04 19:48
  • 阅读:5559

uni-app 全局变量那种方式兼容性最佳啊?

分类:uni-app

官方有一篇《uni-app 全局变量的几种实现方式》
http://ask.dcloud.net.cn/article/35021

我在实际使用中发现了一些问题。
方法1、公用模块,即那个:
> 在 uni-app 项目根目录下创建 common 目录,然后在 common 目录下新建 helper.js 用于定义公用的方法。

此方法确实可行,多端都可以使用,但是在百度小程序下面。onLaunch时并不会加载该全局变量,在onLoad时加载才有效,请问有什么解决办法吗?

方法2、globalData
> 读写 App 对象上的 globalData 属性

此方案,在百度小程序上面倒是完美的解决了onLaunch时引用全局变量的问题。但是微信小程序的getApp()机制同百度压根就不一样,可以说getApp()在微信上面就不能用。

2019-03-11 22:19 负责人:无 分享
已邀请:
scxp

scxp (作者)

方法2,经过仔细测试,原生微信代码中通过:getApp().globalData调用是没有任何问题的。只是uni-app转换过的微信代码,反而取不到值。uni-app输出的百度/H5代码都是正常的。

  • zhangdaren

    经过测试,在app.vue里使用 this.globalData.xxx = "xxxx"这种是无效的,因为this并不能直接引用到globalData。


    在其他页面该怎么调用怎么调用,,但在App.vue里,需要这样赋值: this.$options.globalData.xxxx = "xxxx"

    2019-07-29 09:14

  • 6***@qq.com

    请问这个问题有解决的方案吗?

    2019-08-04 13:31

1***@qq.com

1***@qq.com

这框架的全局变量好多bug,真他妈鸡肋

s***@163.com

s***@163.com

我在 App.vue 中的onLaunch 增加setTimeout,可以解决这个问题.
在setTimeout中给globalData初始化一些值.

7***@qq.com

7***@qq.com

用vuex 实现感觉是最好的,我目前用的就是这个,没遇到什么大的问题

光光i

光光i - ww

vuex

赵虎威

赵虎威

vuex +1

6***@qq.com

6***@qq.com

为什么我的vue页面用this.$options.globalData.xxx获取值就获取不到。

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