@antmjs/vantui
Version:
一套适用于Taro3及React的vantui组件库
46 lines (45 loc) • 1.89 kB
JavaScript
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
};
}