1. 遇到的问题
- 问题一:接受一个老项目,现在会将这个项目以 H5 页面嵌入到 app 中。遇到的问题就是在同一个页面获取定位调用了很多次,但是现在 app 的规范对于获取用户定位信息的次数受到限制,一个页面只能获取一次,不能多次调用 app 的 api 获取用户定位。然后看了一下项目的代码,获取定位的方法,进行了统一的封装,但是存在在不同的组件内进行调用,这样就导致同一个页面,调用了多次定位方法。
- 问题二:订单预览界面接口较慢,出现了用户在接口没有响应的情况下,多次提交了订单,造成同一订单,进行了多次下单。
2. 解决办法
-
问题一解决办法:
1.1 将组件内部的获取定位的方法全部提到页面,页面获取定位后传到组件内部,再用页面的定位进行组件内的操作或请求;
1.2 使用状态管理,比如 redux ,在组件内部监听状态的改变,也就是定位值的获取,然后进行组件的下步操作;
1.3 使用 useContext 获取页面的定位状态,当然这种方法其实和方法二的状态管理是一个,都是监听页面获取定位的值,然后进行组件内部操作;
1.4 上边的方法修改代码量都比较大,遇到的问题主要需求就是:不管页面调用了多少次定位方法,调用 app 的 api 只能是一次。又不想大量修改原来的代码,经过分析,改造调用定位的方法,使用发布-订阅模式。 -
问题二解决办法:
2.1 其实这个问题是开发者在开发中最高频率出现的问题,解决的