@antmjs/vantui
Version:
一套适用于Taro3及React的vantui组件库
53 lines (51 loc) • 2.17 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createExtraNode = createExtraNode;
var _taro = _interopRequireDefault(require("@tarojs/taro"));
var _react = require("@tarojs/react");
var _runtime = require("@tarojs/runtime");
function createExtraNode() {
var view = []; // 支持单个内容的更新,如toast插入后,新元素覆盖,旧元素延时移除
var renderNode = function renderNode(node) {
if (view[0]) {
setTimeout(function () {
removeNode();
}, 10 * 16.66);
}
var currentPages = _taro.default.getCurrentPages();
var currentPage = currentPages.length ? currentPages[currentPages.length - 1] : null;
if (currentPage) {
var currentView = _runtime.document.createElement('view');
var path = currentPage['$taroPath'];
var pageElement = _runtime.document.getElementById(path);
(0, _react.render)(node, currentView);
view.push(currentView);
pageElement === null || pageElement === void 0 ? void 0 : pageElement.appendChild(currentView);
}
};
var removeNode = function removeNode() {
var currentPages = _taro.default.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 = _runtime.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");
}
(0, _react.unmountComponentAtNode)(_rView);
}
};
return {
renderNode: renderNode,
removeNode: removeNode
};
}