taro-hooks
Version:
为 Taro 而设计的 Hooks Library
59 lines (58 loc) • 2.03 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var taro_1 = require("@tarojs/taro");
var core_1 = require("@taro-hooks/core");
var tool_1 = require("../utils/tool");
function useSelectorQuery() {
var query = (0, core_1.useRef)((0, taro_1.createSelectorQuery)());
var querySelector = function querySelector(selector) {
return query.current.select(selector);
};
var querySelectorAll = function querySelectorAll(selector) {
return query.current.selectAll(selector);
};
function queryWithMethod(method, selector, all, params) {
return new Promise(function (resolve, reject) {
try {
var withQuery = all ? querySelectorAll : querySelector;
if (params) {
withQuery(selector)[method](params, resolve).exec();
} else {
withQuery(selector)[method](resolve).exec();
}
} catch (e) {
reject((0, tool_1.generateGeneralFail)("selectorQuery." + method, e.errMsg || e.message));
}
});
}
var getBoundingClientRect = function getBoundingClientRect(selector, all) {
return queryWithMethod('boundingClientRect', selector, all);
};
var getContext = function getContext(selector) {
return queryWithMethod('context', selector);
};
var getFields = function getFields(selector, fields) {
return queryWithMethod('fields', selector, false, fields);
};
var getNode = function getNode(selector) {
return queryWithMethod('node', selector);
};
var getScrollOffset = function getScrollOffset(selector) {
return queryWithMethod('scrollOffset', selector);
};
return [query.current, {
querySelector: querySelector,
querySelectorAll: querySelectorAll,
selectViewport: query.current.selectViewport,
"in": query.current["in"],
exec: query.current.exec,
getBoundingClientRect: getBoundingClientRect,
getContext: getContext,
getFields: getFields,
getNode: getNode,
getScrollOffset: getScrollOffset
}];
}
exports["default"] = useSelectorQuery;
;