【react】管理多个有优先级的弹窗

该博客探讨了两种在React中管理多个独立弹框的方案。方案一使用`useCallback`和`useEffect`实现弹框的条件展示,并通过循环执行。方案二利用数组`reduce`方法按顺序执行多个模态。内容涉及状态管理、函数组件和异步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方案一:适合一次性展示一个弹框,各个弹框没有依赖关系

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));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值