方案一:适合一次性展示一个弹框,各个弹框没有依赖关系
export default () => {
const modalBox = useRef(null)
const modal2 = useCallback(async () => {
}, [])
const modal1 = useCallback(() => {
const dom = modalBox.current
if (a) {
// 不显示modal
return Promise.resolve()
}
// 显示modal
return Promise.reject()
}, [resumeNotPass])
// 弹框执行函数
const ModeFun = useCallback(async () => {
const showModel = [modal1, modal2]
for (const showModelItem of showModel) {
try {
await showModelItem()
} catch {
break
}
}
}, [modal1, modal2])
useEffect(() => {
ModeFun()
}, [ModeFun])
return <div className="modal-box-up" ref={modalBox} />
}```
方案二
const modals = [
modal1,
modal2,
modal3,
modal4,
];
export default function showModal() {
modals.reduce((prev, next) => prev.then(next), Promise.resolve(false));
}