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,這種成本可能很高,由於先後端改動都比較大
       二、對細緻的每一個調用操做作判斷,在頁面卸載的時候終止這些方法
相關文章
相關標籤/搜索