如何通过 ID select 特定记录将其从列表中删除?
How to select a particular record by ID to delete it from the List?
我使用 React 从 API 中获取了一些要显示的记录。
这就是我获取它时的样子。
这是相关代码。
const [checked, setChecked] = useState(false);
const handleChange = () => {
setChecked(!checked);
console.log(checked);
};
<div className="users">
{users.map((user) => {
return (
<div className="users" key={user.Id} >
<label>
<p>
<input
type="checkbox"
onChange={handleChange}
/>
Name: {user.Title}, EmpID: {user.EmpID}, ID: {user.Id}{" "}
<button onClick={() => handleClick(user.Id)} className="">
Delete
</button>
</p>
</label>
</div>
);
})}
</div>
我想要实现的是,当我点击任何复选框时,它们各自的 ID 被选中,然后点击常规删除按钮(尚未创建),如获取和重置,通过删除所选记录他们各自的ID。
这是挑战,我无法通过选中复选框来检索选定的 ID。我只想获取所有选中的复选框,即选中的 ID,以便进一步删除它。
获取的数据在控制台中看起来像这样:
谁能帮我解决这个问题?
您需要为所选用户使用状态数组来 check/uncheck 复选框
单击删除后,它将设置用户列表,其中包含在选定用户状态下不存在的用户。
const [selectedUsers, setSelectedUsers] = useState([]);
const [users, setUsers] = useState([]) // i suppose you have this state to stock your list
const handleChange = (id) => {
if(selectedUsers.findIndex(el => el ===id) !== -1) setSelectedUsers([...selectedUsers, id]); // if id deosn't exist we add it
else {
// if id exist delete it to uncheck the checkbox
const newSelected = selectedUsers.filter((item) => item !== id)
setSelectedUsers(newSelected);
}
};
const handleDelete = () => {
// set users with the old list without the selected ones
const newUsers = users.filter((user) => selectedUsers.findIndex(ele => ele === user.Id) !== -1)
setUsers(newUsers)
};
// here where your rerset and fetch button you add this button
<button onClick={() => handleDelete()} className="">
Delete
</button>
<div className="users">
{users.map((user) => {
return (
<div className="users" key={user.Id} >
<label>
<p>
<input
type="checkbox"
checked={users.findIndex(el => el === user.Id) !== -1}
onChange={()=> handleChange(user.Id)}
/>
Name: {user.Title}, EmpID: {user.EmpID}, ID: {user.Id}{" "}
</p>
</label>
</div>
);
})}
</div>
我使用 React 从 API 中获取了一些要显示的记录。
这就是我获取它时的样子。
这是相关代码。
const [checked, setChecked] = useState(false);
const handleChange = () => {
setChecked(!checked);
console.log(checked);
};
<div className="users">
{users.map((user) => {
return (
<div className="users" key={user.Id} >
<label>
<p>
<input
type="checkbox"
onChange={handleChange}
/>
Name: {user.Title}, EmpID: {user.EmpID}, ID: {user.Id}{" "}
<button onClick={() => handleClick(user.Id)} className="">
Delete
</button>
</p>
</label>
</div>
);
})}
</div>
我想要实现的是,当我点击任何复选框时,它们各自的 ID 被选中,然后点击常规删除按钮(尚未创建),如获取和重置,通过删除所选记录他们各自的ID。 这是挑战,我无法通过选中复选框来检索选定的 ID。我只想获取所有选中的复选框,即选中的 ID,以便进一步删除它。
获取的数据在控制台中看起来像这样:
谁能帮我解决这个问题?
您需要为所选用户使用状态数组来 check/uncheck 复选框 单击删除后,它将设置用户列表,其中包含在选定用户状态下不存在的用户。
const [selectedUsers, setSelectedUsers] = useState([]);
const [users, setUsers] = useState([]) // i suppose you have this state to stock your list
const handleChange = (id) => {
if(selectedUsers.findIndex(el => el ===id) !== -1) setSelectedUsers([...selectedUsers, id]); // if id deosn't exist we add it
else {
// if id exist delete it to uncheck the checkbox
const newSelected = selectedUsers.filter((item) => item !== id)
setSelectedUsers(newSelected);
}
};
const handleDelete = () => {
// set users with the old list without the selected ones
const newUsers = users.filter((user) => selectedUsers.findIndex(ele => ele === user.Id) !== -1)
setUsers(newUsers)
};
// here where your rerset and fetch button you add this button
<button onClick={() => handleDelete()} className="">
Delete
</button>
<div className="users">
{users.map((user) => {
return (
<div className="users" key={user.Id} >
<label>
<p>
<input
type="checkbox"
checked={users.findIndex(el => el === user.Id) !== -1}
onChange={()=> handleChange(user.Id)}
/>
Name: {user.Title}, EmpID: {user.EmpID}, ID: {user.Id}{" "}
</p>
</label>
</div>
);
})}
</div>