Material UI 对话框组件 - 如何显示它?

Material UI Dialog Component - How to show it?

我已经实现了 Material UI table 现在需要在用户单击特定行时显示一个对话框。

Bellow 只是说明我正在做的事情的代码的一部分。它获取 onClick 事件并调用 handleCellClick 函数来处理该事件。 handle 函数应该调用 ResponsiveDialog,它实际上是从 Material UI 中截取的,但由于某种原因它没有被执行。

export const OrderScoreCell = (props) => {

  const { score, scoreDesc } = props

  const handleCellClick = (e) => {
    <ResponsiveDialog />
  }

  return (
    <>
      <TableCell onClick={handleCellClick} lign="left">
        <LightTooltip 
          title={`Risco ${scoreDesc}`} 
          placement="top-end"
          arrow  
          interactive 
          TransitionComponent={Fade} 
          TransitionProps={{ timeout: 600 }} 
          aria-label="score" 
        >

问题

您想要呈现的所有 UI 都需要 return 在函数组件 return 中编辑。从函数返回 JSX 文字仅在函数在 return 中调用时有效,而不是作为事件处理程序回调。

解决方案

添加由点击处理程序更新的本地状态并有条件地呈现对话框。

示例:

export const OrderScoreCell = ({ score, scoreDesc }) => {
  const [isOpen, setIsOpen] = React.useState(false);

  const handleCellClick = (e) => setIsOpen(true);

  return (
    <>
      <TableCell onClick={handleCellClick} lign="left">
        <LightTooltip 
          title={`Risco ${scoreDesc}`} 
          placement="top-end"
          arrow  
          interactive 
          TransitionComponent={Fade} 
          TransitionProps={{ timeout: 600 }} 
          aria-label="score" 
        >
      </TableCell >
      {isOpen && <ResponsiveDialog />}
    <>
  );
};