Material UI Dialog组件显示问题:点击表格行如何正常唤起弹窗?
问题原因
你当前的写法不符合React的渲染逻辑:在事件回调函数中直接返回ResponsiveDialog组件标签不会被渲染到DOM中,所有组件的渲染必须放在组件的return语句块内,通过状态变量控制显隐。
修正方案
1. 新增状态控制弹窗显隐
引入React的useState Hook声明控制弹窗显示的状态变量,点击单元格时仅修改这个状态值。
2. 在return中声明弹窗组件
将ResponsiveDialog放到组件的返回模板中,通过open属性绑定状态值,同时补充关闭弹窗的逻辑。
完整修正代码
import { useState } from 'react' // 其余原有导入(ResponsiveDialog、TableCell等)保持不变 export const OrderScoreCell = (props) => { const { score, scoreDesc } = props // 新增弹窗控制状态 const [dialogOpen, setDialogOpen] = useState(false) const handleCellClick = (e) => { // 点击仅修改状态触发重渲染 setDialogOpen(true) } return ( <> <TableCell onClick={handleCellClick} align="left"> {/* 原代码此处lign为拼写错误,修正为align */} <LightTooltip title={`Risco ${scoreDesc}`} placement="top-end" arrow interactive TransitionComponent={Fade} TransitionProps={{ timeout: 600 }} aria-label="score" > {/* 原有Tooltip内部内容保持不变 */} </LightTooltip> </TableCell> {/* 弹窗放到return中,绑定状态和关闭逻辑 */} <ResponsiveDialog open={dialogOpen} onClose={() => setDialogOpen(false)} // 其余你需要传递给ResponsiveDialog的属性(弹窗内容、操作按钮等)在此处补充 /> </> ) }
内容的提问来源于stack exchange,提问作者Luiz Pina
相关产品推荐
相关产品推荐

