第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

ListItem 在點(diǎn)擊時(shí)打開和關(guān)閉?

ListItem 在點(diǎn)擊時(shí)打開和關(guān)閉?

有只小跳蛙 2023-05-11 15:54:53
我有一個(gè)看起來像這樣的 react/material-ui 組件:export const TodoItem: React.FC<Props> = ( {todo, itemKey}) => {  const [dialogState, setDialogState] = React.useState<boolean>(false);  const handleClose = () => {    setDialogState(false);  };  return (  <ListItem onClick={() => {    setDialogState(true)  }  } key={itemKey}>    <ListItemText        primary={todo.text}    />    <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>  )}它被傳遞到這個(gè)組件export default function ShowTodos () {  const [todos, setTodos] = React.useState<ITodo[]>([]);  useEffect(() => {      getTodos()      .then(({data: {todos}}: ITodo[] | any) => {        const todoList = todos       setTodos(todoList)      })      .catch((err: Error) => console.log(err))  }, [])  return (      <List>        {todos.map((todo: ITodo ) =>              <TodoItem todo={todo} key={todo._id}/>        )}      </List>  );} 理論上,當(dāng)我點(diǎn)擊取消按鈕時(shí),它應(yīng)該被取消。但那不會發(fā)生。dialogState 保持不變——我錯(cuò)過了什么?謝謝,在這個(gè)
查看完整描述

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>

    </>

  );

};


查看完整回答
反對 回復(fù) 2023-05-11
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號