UNPKG

shineout

Version:

Shein 前端组件库

43 lines (39 loc) 1.04 kB
import React from 'react'; import ReactDOM from 'react-dom'; import { messageClass } from './styles'; import Container from './Container'; var elements = {}; var components = {}; function getElement(type) { var div = document.createElement('div'); div.className = messageClass('_', type); document.body.appendChild(div); elements[type] = div; return div; } export function destroy(type) { if (elements[type]) { ReactDOM.unmountComponentAtNode(elements[type]); document.body.removeChild(elements[type]); delete elements[type]; } if (components[type]) { delete components[type]; } } export function getComponent(type) { return new Promise(function (resolve) { var component = components[type]; if (component) { resolve(component); } else { ReactDOM.render(React.createElement(Container, { ref: function ref(comp) { components[type] = comp; resolve(comp); }, onDestory: destroy.bind(null, type) }), getElement(type)); } }); }