UNPKG

@ttk/component

Version:

ttk组件库

66 lines (60 loc) 1.58 kB
import React from 'react' import ReactDOM from 'react-dom' import Modal from './DialogComponent' // import {Modal} from 'antd' // './ModalComponent' export const destroyFns = [] export default function open(config) { let currentConfig = { ...config, close, visible: true } const div = document.createElement('div') document.body.appendChild(div); const destroy = (...args) => { const unmountResult = ReactDOM.unmountComponentAtNode(div); if (unmountResult && div.parentNode) { div.parentNode.removeChild(div); } const triggerCancel = args.some(param => param && param.triggerCancel); if (config.onCancel && triggerCancel) { config.onCancel(...args); } for (let i = 0; i < destroyFns.length; i++) { const fn = destroyFns[i]; // eslint-disable-next-line no-use-before-define if (fn === close) { destroyFns.splice(i, 1); break; } } } const close = (...args) => { currentConfig = { ...currentConfig, visible: false, afterClose: destroy.bind(this, ...args), }; render(currentConfig); } const update = (newConfig) => { currentConfig = { ...currentConfig, ...newConfig, }; render(currentConfig); } function render({ content, ...props }) { ReactDOM.render( <Modal {...props} > {content} </Modal> , div ) } render(currentConfig) destroyFns.push(close) return { destroy: close, update } }