Home Reference Source Repository

src/dialog/commander.js

/**
 * @file 命令式窗口管理
 * @author leon <[email protected]>
 */

import React from 'react';
import ReactDOM from 'react-dom';

let container = null;

export default function createDialogCommand(Dialog) {

    return function (options) {

        if (!container) {
            container = document.createElement('div');
            container.className = 'melon-seperate-dialog-container';
            document.body.appendChild(container);
        }

        let element = document.createElement('div');
        container.appendChild(element);

        ReactDOM.render(
            <Dialog {...options} open={true} />,
            element,
        );

        return function () {
            ReactDOM.unmountComponentAtNode(element);
            container.removeChild(element);
            element = null;
        };

    };

}