描述:
支付宝小程序某个页面有个扫码按钮,点击后,调用支付宝的api,去跳到一个支付宝自带的扫码页,扫码完成后,就自动弹回当前页(无法控制弹回),此时会触发页面的onShow事件
但是业务上需要把扫码得到的code填充到输入框中,并带入搜索
在扫码相关的逻辑上已经写了相关的逻辑代码,但是因为额外出发了onShow,onShow里面本身就有一次查询,所以扫码回来触发了两次查询,一次是扫码的业务查询,一次是额外的onShow查询
造成的问题
onShow查询触发时,扫出来的码还没setState进去,所以onShow触发的那个查询,是没带上扫码code的,并且onShow调用的接口如果回来的较慢,会把正常业务逻辑扫码查询到的结果给覆盖
解决
方案1:
正常解决方案应该是加一个状态控制/锁/flag 之类的变量,点击扫码时flag=true,然后onShow里面判断flag,再去执行相应逻辑
方案2:
封装了一个hook
https://www.jianshu.com/p/30f837935059?v=1698220423472
网友评论