亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Reactjs:如何編輯特定行的表格?

Reactjs:如何編輯特定行的表格?

長風秋雁 2022-12-22 14:32:49
這是我的代碼:const [data, setData] = useState([    {id: 1, name: 'paper', qty: 10},    {id: 2, name: 'bottle', qty: 10}, ]); const [isEditable, setEditable] = useState([]); useEffect(()=>{   data.map(each=>{     isEditable[each.id] = false;   }) })   const handleEdit = (id) => {     var arr = data;     arr[id] = !arr[id];     setEditable(arr);  }  return (    <div>         {data.map((row) => (          <TableRow key={row.id}>            <TableCell>{row.id}</TableCell>            <TableCell>{row.name}</TableCell>            { isEditable[row.id] ?               <TableCell>                <TextField id="outlined-basic" size="small" variant="outlined" />              </TableCell> :              <TableCell>{row.qty}</TableCell>             }            <TableCell>                <button onClick={()=> handleEdit(row.id)}> Edit </button>            </TableCell>                                                      </TableRow>        ))}    </div>  )}我想單擊表格行上的編輯按鈕,文本字段僅出現在特定行上,但是當我單擊它時,文本字段出現在其他行上。這里有什么問題?
查看完整描述

1 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

不知道為什么你的代碼看起來那么復雜。我個人認為您可以通過以下方式使其更簡單以實現您的目標:


只需存儲您正在編輯的 ID:

const [editingId, setId] = useState();

單擊編輯按鈕時設置編輯 ID:

const handleEdit = (id) => {

  setId(id);

}

檢查在 JSX 中顯示文本輸入的條件:

{editingId === row.id ? 

  <TableCell>

    <TextField id="outlined-basic" size="small" variant="outlined" />

  </TableCell> :

  <TableCell>{row.qty}</TableCell> 

}

當您也完成編輯時,您可能必須處理以不可變的方式更新列表。


查看完整回答
反對 回復 2022-12-22
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號