UNPKG

@ali-i18n-fe/dada-component

Version:
49 lines (42 loc) 1.11 kB
const body = document.querySelector("body"); /** * 懒加载Dom * @param dom * @param fn */ const onShow = (dom, fn) => { const domClientRect = dom.getBoundingClientRect(); const scrollFn = () => { const seeHeight = document.documentElement.clientHeight; const scrollTop = document.body.scrollTop || document.documentElement.scrollTop; if (domClientRect.top < seeHeight + scrollTop) { body.removeEventListener("scroll", scrollFn); setTimeout(() => { fn(); }, 100); } }; body.addEventListener("scroll", scrollFn); scrollFn(); }; export const buildDocsRef = ( getResource: () => Promise<{ Component: React.Component; Docs: any }>, callback?: (ref: HTMLElement) => void ) => { let Component, DocsRender, gotRef; getResource().then(options => { Component = options.Component; DocsRender = options.Docs; gotRef && onShow(gotRef, () => { if (Component && DocsRender && gotRef) { DocsRender(Component, gotRef); callback(gotRef); } }); }); return ref => { gotRef = ref; }; };