收藏
回答

多个页面,如何监听全局变量的变化事件?当前使用defineProperty方法会出现重复定义错误

当前的方法参考该文档https://blog.csdn.net/m0_59140170/article/details/123027692,但是运行后会报错

```

TypeError: Cannot redefine property: user

```

我推测是由于多个页面需要注册该监听事件,导致属性的重复定义。所以有如下两个问题:

  1. 如何解决该重复定义问题
  2. 如果不能解决,该怎么做到多个页面同时监听一个全局变量呢?


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

1 个回答

  • 跨商通
    跨商通
    2022-11-14

    onShow里setData完事。

    2022-11-14
    有用
    回复 6
    • NeverMore
      NeverMore
      2022-11-14
      这样有个问题,有些数据是通过云端实时更新到全局变量的,对于已经打开的页面(onShow执行过了),他们的页面时没法更新对应状态的。
      2022-11-14
      回复
    • 跨商通
      跨商通
      2022-11-14回复NeverMore
      onShow里怎么就不能运行“获取全局变量”的代码呢?哪怕去后端读数据,为什么不能写这样的代码吗?“对于已经打开的页面”,你不显示的时候,它变化不变化有什么关系?当它切换到最前面的时候,显示的一瞬间,可能没有变化,但是onShow执行后,不就正常的执行变化了吗?你非要在乎那0.01秒的变化瞬间?
      2022-11-14
      回复
    • NeverMore
      NeverMore
      2022-11-14回复跨商通
      我理解你的意思。我只是不明白怎么做,是请教你的哈。比如现在有个定时器定期(每隔200ms)读取云端数据到本地的全局变量,而在这之前某个页面(假设主页吧)是打开着的(比如说打开着有1分钟,意味着它的onShow是1分钟前调用的),而且在不关闭重新打开的情况下,如何更新刚才从云端拉取的数据到页面展示呢?
      2022-11-14
      回复
    • 跨商通
      跨商通
      2022-11-14回复NeverMore
      “定时器定期(每隔200ms)读取云端数据到本地的全局变量”,改成onShow里去执行这段代码,然后this.setData
      2022-11-14
      回复
    • NeverMore
      NeverMore
      2022-11-14回复跨商通
      那是所有页面的onShow都要这么做吗?因为使用同一个全局变量的不同页面都需要类似的更新逻辑。如果都这样做,总感觉不太clean...
      2022-11-14
      回复
    查看更多(1)
登录 后发表内容