为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信