收藏
回答

[已解决] app.globalData.userInfo 为什么不能修改?

项目版本:2.27.1 及以上版本

小程序概况:

小程序有两个页面,index 和register,我想在register页面修改和设置用户头像,并在index页面展示出来;

我使用全局变量来作为值的传递,在register页面下,获得头像路径后,把这个路径传递给全局变量,但问题出现了,这里会显示`app is not defind`

这是为什么?`app.globalData.userInfo!.avatarUrl`是不能修改的吗?

如果不能修改那我应该使用本地存储或者其他方式来传递值吗?


------------------------------------------------------------------


解决方案描述:

在需要修改的页面使用getApp()方法代替app这个全局变量,同时可以去掉!修饰符。

这个语句完成后是这样的`getApp().globalData.userInfo.avatarUrl` 。

最后一次编辑于  2022-11-14
回答关注问题邀请回答
收藏

3 个回答

  • 风清雾散云开见日出
    风清雾散云开见日出
    2022-11-14

    这儿为啥有个感叹号

    2022-11-14
    有用 1
    回复 5
    • 游年
      游年
      发表于移动端
      2022-11-14
      不用!声明,就会报错app可能为未定义
      2022-11-14
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      2022-11-14回复游年
      你在js文件最前面申明:const app = getApp();后应该不会报未定义的
      2022-11-14
      回复
    • 游年
      游年
      发表于移动端
      2022-11-14回复风清雾散云开见日出
      不行的,会重复声明,我在index界面定义过了
      2022-11-14
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      2022-11-14回复游年
      那就按照楼下说的,把app改为getApp(),就可以啦
      2022-11-14
      回复
    • 游年
      游年
      2022-11-14回复风清雾散云开见日出
      嗯,好像可以了,不用对象接收getApp(),然后直接链式好像就没问题了
      2022-11-14
      回复
  • 拾忆
    拾忆
    2022-11-13

    const app = getApp()

    在JS文件顶部先声明下。

    2022-11-13
    有用 1
    回复 4
    • 游年
      游年
      发表于移动端
      2022-11-13
      我在index界面下已经申明过了,不能在register界面下声明,再次声明会引发重复声明错误
      2022-11-13
      回复
    • 拾忆
      拾忆
      2022-11-13回复游年
      不想重复声明就直接用 getApp()
      2022-11-13
      回复
    • 游年
      游年
      发表于移动端
      2022-11-13回复拾忆
      好的,我等下试试
      2022-11-13
      回复
    • 游年
      游年
      2022-11-14
      可以了,感谢
      2022-11-14
      回复
  • 养乐多💍
    养乐多💍
    2022-11-14

    在onShow里获取修改的值

    2022-11-14
    有用
    回复 2
    • 养乐多💍
      养乐多💍
      2022-11-14
      或者用缓存的方式存储信息也可以,要不你提供一下你的代码,给你改改也可以
      2022-11-14
      回复
    • 游年
      游年
      发表于移动端
      2022-11-14回复养乐多💍
      onshow可以获取但是不能设置啊
      2022-11-14
      回复
登录 后发表内容