The concept of EasyModal is simple: to treat the operations of modals as asynchronous events, managing their lifecycle through Promises. It also provides type inference and constraints.
English | 简体中文
- Based on Promise,In addition, there is no need to manage the switch status, which can reduce the tedious status management.
- Supports return value type inference,elevate the development experience.
- Small size(~1kb after gzip)、easy access non-intrusive、support any UI library.
# with yarn
yarn add ez-modal-react -S
# or with npm
npm install ez-modal-react -S
- use EasyModal Provider
import EasyModal from 'ez-modal-react';
ReactDOM.render(
<EasyModal.Provider> // wrap your main Componet
<App />
</EasyModal.Provider>
document.getElementById('root'),
);
- create modal
import EasyModal, { InnerModalProps } from 'ez-modal-react';
interface IProps extends InnerModalProps<'modal'> {
age: number;
name: string;
}
const InfoModal = EazyModal.create((props: IProps) => (
<Modal
open={props.visible}
//(property) hide: (result: 'modal') => void ts(2554)
onOk={() => props.hide('modal')}
onCancel={() => props.hide(null)}
afterClose={props.remove}
>
<h1>{props.age}</h1>
<h1>{props.name}</h1>
</Modal>
));
- anywhere use it
// "The property 'age' is missing in the type '{ name: string; }'... ts(2345)"
const res = await EasyModal.show(InfoModal, { age: 10 });
console.log(res); // modal
- fhd Inc @xpf
- nice-modal-react
- Thanks to SevenOutman (Doma) repository building support, I consulted his aplayer-react project