UNPKG

@antmjs/vantui

Version:

一套适用于Taro3及React的vantui组件库

46 lines (45 loc) 1.89 kB
import Taro from '@tarojs/taro'; import { render, unmountComponentAtNode } from '@tarojs/react'; import { document } from '@tarojs/runtime'; export function createExtraNode() { var view = []; // 支持单个内容的更新,如toast插入后,新元素覆盖,旧元素延时移除 var renderNode = function renderNode(node) { if (view[0]) { setTimeout(function () { removeNode(); }, 10 * 16.66); } var currentPages = Taro.getCurrentPages(); var currentPage = currentPages.length ? currentPages[currentPages.length - 1] : null; if (currentPage) { var currentView = document.createElement('view'); var path = currentPage['$taroPath']; var pageElement = document.getElementById(path); render(node, currentView); view.push(currentView); pageElement === null || pageElement === void 0 ? void 0 : pageElement.appendChild(currentView); } }; var removeNode = function removeNode() { var currentPages = Taro.getCurrentPages(); var currentPage = currentPages.length ? currentPages[currentPages.length - 1] : null; var rView = view[0]; if (currentPage && rView) { var _rView = view[0]; view.splice(0, 1); var path = currentPage['$taroPath']; var pageElement = document.getElementById(path); try { var _pageElement$removeCh; pageElement === null || pageElement === void 0 ? void 0 : (_pageElement$removeCh = pageElement.removeChild) === null || _pageElement$removeCh === void 0 ? void 0 : _pageElement$removeCh.call(pageElement, _rView); } catch (err) { console.info("@antmjs/vantui: \n Does not support the execution of a purely imperative component cleanup method when the component is destroyed"); } unmountComponentAtNode(_rView); } }; return { renderNode: renderNode, removeNode: removeNode }; }