Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Apakah penggunaan modal dalam bertindak balas

Apakah penggunaan modal dalam bertindak balas

WBOY
Lepaskan: 2022-04-22 11:02:38
asal
3700 orang telah melayarinya

Secara tindak balas, modal digunakan untuk menutup paparan asli yang mengandungi paparan akar, yang boleh mencapai kesan penyamaran Sintaksnya ialah "" atau "Modal.confirm()".

Apakah penggunaan modal dalam bertindak balas

Persekitaran pengendalian tutorial ini: Sistem Windows 10, bertindak balas versi 17.0.1, komputer Dell G3.

Apakah penggunaan modal in react

Pengenalan ringkas modal

Kotak dialog mod. Apabila pengguna perlu mengendalikan transaksi tetapi tidak mahu melompat ke halaman dan mengganggu aliran kerja, Modal boleh digunakan untuk membuka lapisan terapung di tengah halaman semasa untuk menjalankan operasi yang sepadan.

Selain itu, apabila anda memerlukan kotak pengesahan ringkas untuk bertanya kepada pengguna, anda boleh menggunakan kaedah gula sintaks seperti Modal.confirm().

Pengeluaran titik fungsi teras

Laksanakan Modal mengikut antara muka yang disediakan oleh dokumen Antd Modal.

Apakah penggunaan modal dalam bertindak balas

Pelaksanaan teras

Komponen Modal adalah istimewa kerana ia mempunyai dua kegunaan:

  1. Penggunaan biasa:<modal visible="{this.state.visible}"></modal>
  2. Memanggil kaedah statik : Modal.confirm({ title: '取消后,已编辑的脚本信息将不会保存,请确认是否取消。', okText: '确认取消', cancelText: '暂不取消', onOk() { me.props.onCancel(); } })

Idea saya ialah kedua-dua panggilan ini disatukan dan dikekalkan dalam internalModal.tsx

Apakah penggunaan modal dalam bertindak balas
Mengikuti idea ini, untuk Modal.tsx .
1) Kaedah render tidak akan dikekalkan, tetapi internalModal.tsx akan dipanggil dalam kitaran hayat componentDidMount / componentDidUpdate untuk melengkapkan rendering
2) Kaedah statik yang berkaitan mengesahkan, ralat, maklumat dikekalkan dalam Modal.tsx tunggu.

// Modal.tsxexport default class Modal extends React.Component<modalprops> {
    static propTypes = {
		...
    };

    static confirm(content) {
        const modal = new InternalModal();
        const props = {
            ...Modal.defaultProps,
            title: '提示',
            children: content,
            cancelButton: true,
            okButton: true,
            okButtonText: '确定',
            cancelButtonText: '取消',
            closable: false,
            visible: true,
            onOk() {
                modal.destroy();
            },
            onCancel() {
                modal.destroy();
            }
        };
        modal.render(props);
    }

    private modal;
    constructor(props: ModalProps) {
        super(props);
        this.modal = new InternalModal();
    }

    componentWillUnmount() {
        this.modal.destory();
        this.modal = null;
    }

    componentDidMount() {
        this.modal.render(this.props);
    }

    componentDidUpdate() {
        this.modal.render(this.props);
    }

    componentWillReceiveProps(nextProps) {
        if (nextProps.visible) {
            this.modal.show();
        } else {
            this.modal.hide();
        }
    }

    render() {
        return null;
    }}</modalprops>
Salin selepas log masuk

Langkah seterusnya ialah yang paling kritikal internalModal.tsx :

export default class InternalModal {

    private props;

    render(props) {
        const {...} = this.props;

        this.createContainer();
        const icon = require('../../assets/icon/info.svg') as string;

        const modalDOM = ...;

        ReactDOM.render({modalDOM}, modalContainer,
	        () => {
	            if (visible) {
	                this.show();
	            }
	        });
    }

	...

    createContainer() {
        if (!modalContainer) {
            modalContainer = document.createElement('p');
            document.body.appendChild(modalContainer);
        }
    }

    destroy() {
        if (modalContainer) {
            ReactDOM.unmountComponentAtNode(modalContainer);
        }
    }

    show() {
        if (modalContainer) {
            modalContainer.style.display = 'block';
        }
    }

    hide() {
        if (modalContainer) {
            modalContainer.style.display = 'none';
        }
    }}
Salin selepas log masuk

Daripada kod, kita boleh mencari titik pelaksanaan internalModal :

  1. Sebagai kelas js biasa (tidak mewarisi React.Component), ia menyediakan kaedah render Dalam render, ReactDOM.render(element, container[. , panggil balik])Render tetingkap timbul

  2. Buat bekas p pada dokumen untuk mendarabkan Modal dan kawal paparan/sembunyikan melalui paparan css Sebenarnya, anda boleh juga gunakan React Portal.

  3. Anda boleh menggunakan beberapa pustaka pihak ketiga seperti react-transition-group untuk meningkatkan kesan animasi paparan Modal/sembunyikan.

Pembelajaran yang disyorkan: "tutorial video bertindak balas"

Atas ialah kandungan terperinci Apakah penggunaan modal dalam bertindak balas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan