react-modal-store
v1.0.0
Published
global manage react modal
Downloads
8
Readme
react-model-store
Centralized management of modal. Manage visible prop and handle onClose event Automatically
Install
$ npm install react-model-store --save
Usage
import React, { useContext } from 'react';
import ReactDOM from 'react-dom';
import { Modal } from 'antd';
import { ModalStore, useModal } from 'react-model-store';
function Modal1({ text, visible, onCancel, afterClose }) {
return (
<Modal title="It's m1" visible={visible} onCancel={onCancel} afterClose={afterClose}>
<div>{text}</div>
</Modal>
);
}
function Modal2({ name, visible, onCancel, afterClose }) {
return (
<Modal title="It's m2" visible={visible} onCancel={onCancel} afterClose={afterClose}>
<div>{name}</div>
</Modal>
);
}
const modalMap = {
m1: Modal1,
m2: Modal2,
};
function App() {
return (
<ModalStore modalMap={modalMap} destroyOnClose="afterClose">
<Content />
</ModalStore>
);
}
function Content() {
const dispatchModal = useModal();
return (
<div>
<button type="button" onClick={() => dispatchModal('m1', { text: 'm1 content' })}>
show m1
</button>
<button type="button" onClick={() => dispatchModal('m2', { name: 'm2 content' })}>
show m2
</button>
</div>
);
}
ModalStore
| Prop | Description | Type | Default |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ---------- |
| visiblePropName | the prop name that controls the modal display | string
| 'visible' |
| onClosePropName | the prop name that closes the modal by set visible = false
| string
| 'onCancel' |
| destroyOnClose | Whether to unmount modal on close, if this value is a string, it'll unmount when calling this method instead of onClosePropName | boolean | string
| true |
| modalMap | all the modals by key-value | object
| |
useModal
The hook return a function to open a new modal.
const dispatchModal = useModal();
<button onClick={() => dispatchModal('key', {})}></button>;
License
Copyright (c) 2020-present xiemengxiong