react-native 开发笔记 (四)

地理位置定位的使用

rn自己自带的模块Geolocation,能够获取当前地理位置信息,调用getCurrentPosition方法就能够了,这是一个异步方法react

Geolocation.getCurrentPosition(
      location => {})
速度:  location.coords.speed 
 经度:  location.coords.longitude +
 纬度:  location.coords.latitude +
 准确度:  location.coords.accuracy +
 行进方向:  location.coords.heading +
 海拔:  location.coords.altitude +
 海拔准确度:  location.coords.altitudeAccuracy +
 时间戳:  location.timestamp;

若是须要计算两个位置之间的距离git

export default function getDisance(lat1, lng1, lat2, lng2) {
  var radLat1 = toRad(lat1);

  var radLat2 = toRad(lat2);
  var deltaLat = radLat1 - radLat2;
  var deltaLng = toRad(lng1) - toRad(lng2);

  var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLng / 2), 2)));
  var rdis = (dis * 6378137) / 1000;

  return rdis.toFixed(1);
}

react native事件冒泡

曾一度纠结于rn事件如何阻止冒泡的,查遍文章,没有找到相关资料。web

后来才发现,有一个办法能够阻止冒泡,那就是在父组件和子组件的中间插入一个Touchable*这样子的组件,这个组件不要绑定事件,这样的话内部的事件是不会冒泡到顶部的ajax

react native多页面鉴权

熟悉作web富客户端,都会须要处理这个权限验证的逻辑。好比判断用户有没有登陆,而后作相应的操做或者页面跳转。后端

react-native 也是同样的,作法也没有什么区别。react-native

个人作法比较简单粗暴api

通常会封装一个公共的ajax模块,在全部请求之中判断用户有没有过时,过时作相应处理,没有过时则正常响应。正常使用起来,实际上是可使用的,可是也存在一些问题服务器

  1. react-native的fetch自己是能够保存cookie的,这就致使app用户过时时间由服务器配置决定的。那若是app若是须要本身决定用户的过时时长的话,这就须要额外的封装,好比保存帐户和密码作自动登陆。cookie

  2. 一个页面能够有多个请求,不止一个。这些请求在页面加载完成初期,就要去所有加载。
    一、可是若是这时候用户是过时的,请求多个接口是没有必要的。
    二、咱们可能的逻辑是在ajax返回未登陆的状态以后,咱们可能已经跳转到首页或者登陆页面去了。这时候其余接口若是有不须要鉴权就返回的数据,再去执行逻辑的时候,有可能会引起一块儿没法预知的错误。而fetch api是不能abort的,app

    解决办法我觉着

    一、能够引入GraphQL,这种成本可能很高,由于先后端改动都比较大
       二、对细致的每一个调用操做作判断,在页面卸载的时候终止这些方法
相关文章
相关标签/搜索