1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是使用對話框組件時(shí)的常見錯(cuò)誤,
你包裹了TodoItem組件主體ListItem,它onClick是setDialogState(true),這對孩子的 onClick 有影響
你應(yīng)該像下面這樣修改你的組件:
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>
</>
);
};
添加回答
舉報(bào)