1 回答
TA贡献1804条经验 获得超7个赞
这是使用对话框组件时的常见错误,
你包裹了TodoItem组件主体ListItem,它onClick是setDialogState(true),这对孩子的 onClick 有影响
你应该像下面这样修改你的组件:
export const TodoItem: React.FC<Props> = ({ todo, itemKey }) => {
const [dialogState, setDialogState] = React.useState<boolean>(false);
const handleClose = () => {
setDialogState(false);
};
return (
<>
<Dialog
open={dialogState}
onClose={() => setDialogState(false)}
aria-labelledby="form-dialog-title"
>
<DialogTitle id="form-dialog-title">Update</DialogTitle>
<DialogContent>
<TextField
defaultValue={todo.text}
autoFocus
margin="dense"
id="name"
fullWidth
/>
</DialogContent>
<DialogActions>
<Button color="primary" onClick={handleClose}>
Cancel
</Button>
<Button color="primary" onClick={handleClose}>
Update
</Button>
</DialogActions>
</Dialog>
<ListItem
onClick={() => {
setDialogState(true);
}}
key={itemKey}
>
<ListItemText primary={todo.text} />
</ListItem>
</>
);
};
添加回答
举报