taro-hooks
Version:
为 Taro 而设计的 Hooks Library
57 lines (56 loc) • 2.2 kB
JavaScript
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
Object.defineProperty(exports, "__esModule", {
value: true
});
var tslib_1 = require("tslib");
var taro_1 = require("@tarojs/taro");
var core_1 = require("@taro-hooks/core");
var usePromise_1 = tslib_1.__importDefault(require("../usePromise"));
var index_1 = require("./utils/index");
function useLocation(options) {
var _ref = (0, core_1.useState)(),
location = _ref[0],
setLocation = _ref[1];
var getAsync = (0, usePromise_1["default"])(index_1.getLocation);
var get = function get(getOption) {
return getAsync(_extends({}, options != null ? options : {}, getOption != null ? getOption : {})).then(function (res) {
setLocation(res);
return res;
});
};
var choose = (0, usePromise_1["default"])(taro_1.chooseLocation);
var choosePOI = (0, usePromise_1["default"])(taro_1.choosePoi);
var open = (0, usePromise_1["default"])(taro_1.openLocation);
var startUpdateAsync = (0, usePromise_1["default"])(taro_1.startLocationUpdate);
var startBackgroundAsync = (0, usePromise_1["default"])(taro_1.startLocationUpdateBackground);
var stopUpdateAsync = (0, usePromise_1["default"])(taro_1.stopLocationUpdate);
var toggleUpdate = function toggleUpdate(onOff, background) {
return onOff ? background ? startBackgroundAsync() : startUpdateAsync() : stopUpdateAsync();
};
var on = function on(callback, error) {
if (error) {
(0, index_1.onLocationChangeError)(callback);
}
(0, index_1.onLocationChange)(callback);
};
var off = function off(callback, error) {
if (error) {
(0, index_1.offLocationChangeError)(callback);
}
(0, index_1.offLocationChange)(callback);
};
(0, core_1.useEffect)(function () {
get();
}, []);
return [location, {
get: get,
choose: choose,
choosePOI: choosePOI,
open: open,
toggleUpdate: toggleUpdate,
on: on,
off: off
}];
}
exports["default"] = useLocation;
;