You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chakra UI Modal无法正常运行 触发hook后屏幕空白问题求助

问题原因排查

  1. 导入不存在的组件触发运行时报错
    Chakra UI官方并未导出Lorem组件,该组件仅为官方文档演示时的占位示例组件,业务代码中直接导入使用不存在的组件会触发JS运行时错误,直接导致页面白屏。
  2. Modal状态完全隔离无法联动
    你在父组件Swibc中通过useDisclosure定义了一组控制弹窗的状态isOpen/onOpen/onClose,但子组件DialogModal内部又单独定义了一组独立的useDisclosure状态,两者没有任何关联。点击父组件的「Create」按钮触发的是父组件的状态变更,完全不会影响子组件Modal的显隐,同时DialogModal中还多渲染了一个不需要的「Open Modal」按钮。
  3. 父组件JSX语法错误
    你提供的父组件代码中,return块内的<Box as="section">、<Box ml={{ base: 0, md: 60 }}>等标签都没有对应的闭合标签,JSX语法错误也会导致页面渲染失败白屏。

修复方案

  1. 修复DialogModal组件:
  • 删除不存在的Lorem组件导入和使用,替换为实际业务内容
  • 移除内部的useDisclosure和多余的Open按钮,改为通过props接收父组件传递的控制状态
    修改后的DialogModal代码参考:
import React from 'react';
import {
    Modal,
    ModalOverlay,
    ModalContent,
    ModalHeader,
    ModalFooter,
    ModalBody,
    ModalCloseButton,
    Button,
} from "@chakra-ui/react"

const DialogModal = ({isOpen, onClose}) => {
    return (
        <Modal isOpen={isOpen} onClose={onClose}>
            <ModalOverlay />
            <ModalContent>
            <ModalHeader>Modal Title</ModalHeader>
            <ModalCloseButton />
            <ModalBody>
                这里替换为实际的弹窗内容
            </ModalBody>
            <ModalFooter>
                <Button colorScheme="blue" mr={3} onClick={onClose}>
                关闭
                </Button>
                <Button variant="ghost">确认操作</Button>
            </ModalFooter>
            </ModalContent>
        </Modal>
    )
}
export default DialogModal;
  1. 调整父组件调用逻辑:
    将父组件的状态传递给DialogModal,修改调用代码为:
<DialogModal isOpen={isOpen} onClose={onClose} />
  1. 补全父组件JSX中所有未闭合的标签,保证语法符合规范。

内容的提问来源于stack exchange,提问作者Keshav Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:09:00