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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 13:57:01