redoume@163.com
redoume@163.com
  • 发布:2019-12-04 19:50
  • 更新:2019-12-06 21:14
  • 阅读:128

关于v3下getApp在首页不一定获取得到的问题

分类:nvue

v3模式加速了首页 nvue 的启动速度,当在首页 nvue 中访问 getApp 不一定可以获取真正的 App 对象

现在问题来了:

  • nvue页面,全局js变量不能保持状态;
  • nvue页面,store工具类js中使用无法保持与同步状态;
  • nvue页面,getApp不一定在首页获取得到;

那我现在存储了 一个 tokenstorage 中,这个 token,我会用在工具类 js 中,比如封装的 request

最开始我们只需要从storage中取一次,然后放入全局js中,或者存入 store,并保持更新就可以。

后来 nvue 下,工具类 js 无法保持 store 状态的同步,全局js也是孤立的,然后换成了 getApp ,把取出来的 token 放入了globalData。工具类 js 可以通过 getApp 来获取 globalData

现在 getApp 不一定有效,这种情况,token 就要 变成每一次都要从 storage 中取。每一次判断 getApp 是不是 有效,有效就存 token,然后从 getApp 里面取,不有效,继续从 storage 中取。

一般使用getApp,基本上就是为了弥补store在工具类的js无法使用的问题,而且基本上首页就会直接使用。最常见的就是从 storage 中取值,放入 globalData,接下来再继续进行一些操作,这些操作一般会根据获取出来的值而做不同的响应。

对于一些开局不需要依赖用户状态检测的应用来说,的确可以更快进入首页。可是对于根据上一次的状态来做判断的来说,这个状态值每次都要从storage中来取,storage又给人感觉用了会奔溃的感觉,每次都要维护 try/catch

不知道对于想在第一页就获取到 getApp 的有没有什么 确保 能够拿到 getApp 的办法。

2019-12-04 19:50 分享
已邀请:
GUNDAM

GUNDAM

解决了吗

  • redoume@163.com (作者)

    暂时裸奔中,不太想改代码。

    2019-12-07 11:05

  • GUNDAM

    回复 redoume@163.com: 兄弟 解决的话 告知下 这次官方v3 为了加快首页打开速度 有点为难开发者了

    2019-12-08 10:58

  • redoume@163.com (作者)

    回复 GUNDAM: https://github.com/dcloudio/uni-app/issues/1091https://github.com/dcloudio/uni-app/issues/1091

    2019-12-10 15:04

  • GUNDAM

    回复 redoume@163.com: v3正式版 hbuilderx2.5.1 好像不用改过去代码 也能运行 不知是否官方内部处理了全局变量挂载逻辑

    2020-01-06 15:43

要回复问题请先登录注册