UNPKG

taro-hooks

Version:
54 lines 1.93 kB
import { createSelectorQuery } from '@tarojs/taro'; import { useRef } from '@taro-hooks/core'; import { generateGeneralFail } from '../utils/tool'; function useSelectorQuery() { var query = useRef(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(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 }]; } export default useSelectorQuery;