[英]Reactjs: How to edit table on specific row?
这是我的代码:
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>
)
}
我想点击表格行上的编辑按钮,文本字段只出现在特定的行上,但是当我点击它时,文本字段会出现在其他行上。 这里有什么问题?
不知道为什么你的代码看起来很复杂。 就个人而言,我认为您可以通过以下方式使其更简单以实现您的目标:
const [editingId, setId] = useState();
const handleEdit = (id) => {
setId(id);
}
{editingId === row.id ?
<TableCell>
<TextField id="outlined-basic" size="small" variant="outlined" />
</TableCell> :
<TableCell>{row.qty}</TableCell>
}
当您完成编辑时,您可能必须以不可变的方式更新列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.