當我試圖將物件添加到一個組件內的鉤子時,它作業得很好--有點兒。 但似乎無論我怎么做,都無法讓鉤子更新整個選定的專案陣列。它總是缺少最后一個選定的物件。這在洗掉物件時也是如此。
因此,假設我選擇了專案1、2、5 - 那么鉤子就缺少了5。 假設我選擇了1、2、4、5,但取消了對2的選擇,那么鉤子得到了所有的選擇,但沒有取消對2的選擇。
這是我的代碼。
const [selected, setSelected] = React.useState<string[]> ()
React.useEffect(() =>/span> {
const getBrands = async ( ) => {
const user = await getUser()
setSelected(user?.brands)
}
getBrands()
}
, [])
const toggleSelection = async(item: string) => {
console.log("clicked: "/span>, item)
if (selected === undefined){
setSelected([item])
}
if (selected?.includes( item )) {
setSelected(selected.filter((i) => i !== item)
} else {
setSelected([...selected, item])
}
await updateUser({brands: selected})
}
這是控制臺的輸出:
clicked: 2.
Updating with Object {
"品牌"。Array [
"1",
"3",
"5",
],
}
clicked: 4.
Updating with Object {
"品牌"。Array [
"1",
"3",
"5"。
"2",
],
uj5u.com熱心網友回復:
我相信這個問題是重復的,請檢查這個鏈接
我希望這個解決方法對你有用 :
...
const toggleSelection = (item: string) => {
console.log("clicked: "/span>, item)
if (selected === undefined){
setSelected([item])
}
if (selected?.includes( item )) {
setSelected(selected.filter((i) => i !== item)
} else {
setSelected([...selected, item])
}
}
React.useEffect(async() => {
//'selected'將在這里被更新。
if(selected.length>0)
await updateUser({brands: selected})
}
, [selected])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/309148.html
標籤:
