国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

使用useState hook實(shí)現(xiàn)持久值在多個(gè)函數(shù)呼叫之間的保持
P粉006540600
P粉006540600 2023-08-14 13:33:49
0
1
584
<p>我在一個(gè)按鈕上呼叫「deleteDepartment」函數(shù)來(lái)刪除表格中的部門行。從表格中(我正在使用使用tanstack表的shancn表)獲取“selectedRows”鉤子中的選定行索引(將setSelectedRows作為prop傳遞給表格組件,該組件從表格中的rowSelection鉤子中獲取值)。 </p> <p><strong>問(wèn)題是</strong>:我能夠刪除前兩三行沒(méi)有任何問(wèn)題,但是當(dāng)我繼續(xù)刪除時(shí),“rowSelection”狀態(tài)會(huì)保存來(lái)自上一個(gè)函數(shù)調(diào)用的值,並將其新增至目前選定的行數(shù)組。 </p> <p><em><strong>範(fàn)例</strong></em>:如果我刪除行['1'],下次我點(diǎn)擊按鈕刪除行2,那麼「rowSelection」的值應(yīng)該只是['2'],但它會(huì)加到先前的值中,如['1','2']。 </p> <p>我迷失在為什麼會(huì)發(fā)生這種行為。我認(rèn)為這可能是由於閉包和非同步性質(zhì)導(dǎo)致的,因此我使用了useCallback鉤子,但沒(méi)有用。請(qǐng)有更好知識(shí)的人幫忙</p> <pre class="brush:php;toolbar:false;">const DepartmentsAndRolesPage = () => { const [departments, setDepartments] = useState<departmentTypes[]>([]); const [selectedRows, setSelectedRows] = useState({}); const [rowIndexes, setRowIndexes] = useState<string[]>([]); useEffect(() => { getDepartment(); }, []); useEffect(() => { const indexesToAdd = Object.keys(selectedRows); setRowIndexes(indexesToAdd); }, [selectedRows]); const deleteDepartment = useCallback(async () => { if (rowIndexes.length === 0) { return; } if (rowIndexes.length === 1) { const filteredDepartment = departments[parseInt(rowIndexes[0])]; const id = filteredDepartment._id; const response = await axios.delete(`/api/department/delete/${id}`); if (response.statusText === "OK") { getDepartment(); setSelectedRows({}); } return; } if (rowIndexes.length > 1) { const departmentsToDelete = rowIndexes.map( (rowIndex) => departments[parseInt(rowIndex)]._id ); const response = await axios.post("/api/department/delete", { _id: departmentsToDelete, }); if (response.statusText === "OK") { getDepartment(); setSelectedRows({}); } return; } }, [departments, rowIndexes, toast]); Return (rest of the UI code here.... )</pre> <p><br /></p>
P粉006540600
P粉006540600

全部回覆(1)
P粉221046425

在你的刪除處理函數(shù)的最後,你應(yīng)該將rowIndexes設(shè)定為空數(shù)組。

const deleteDepartment = async () => {
   //你的函數(shù)代碼...
   setRowIndexes([]);
   return;
}
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板