注意:这个bug和 冷启动 / 热启动 / 获取参数API 无关,是“重新进入小程序”入口特有的bug。
复现步骤:
- 携带启动参数进入小程序,如扫码二维码(onLaunch / onShow / wx.getLaunchOptionsSync / wx.getEnterOptionsSync 都可以拿到,值一样)。
- 根据启动参数,执行对应的业务逻辑。
- 用户手动点击右上角胶囊——点击重新进入小程序。
- 重新进入后,会始终保留第1步的启动参数(onLaunch / onShow / wx.getLaunchOptionsSync / wx.getEnterOptionsSync 都可以拿到,值一样)。这会导致重复执行第2步的业务逻辑,产生预期外的副作用。
期望表现:
“点击右上角胶囊——点击重新进入小程序” 这个行为是冷启动,按道理应该和其他的冷启动表现一致,即不保留上一次的启动参数。
如果官方解决不了,至少应该给一个场景值能区分 “点击重新进入小程序” 的 onLaunch 和其他入口的 onLaunch;或者暴露给开发者清除启动参数的API,用完即删。
社区很多人提到过启动参数的问题,初始化流程对业务实现的重要性不言而喻,请官方重视。