我有這樣定義的 useState 變數
const [queryBuilder, setQueryBuilder] = useState({location: [], metric: [], datetime: [], statistics: []})
然后我有一個函式,它應該能夠將單個屬性設定回空陣列 []。在這里,我遇到了問題,我嘗試了幾種方法,但沒有奏效,例如。
const clearCategory = (e, category) => {
setQueryBuilder(prev => { return {...prev, prev[category]: []}})
}
這行不通,但我嘗試通過以前的物件和括號表示法訪問屬性(我也嘗試過點表示法)。
通常我可以像這樣動態訪問
queryBuilder[category]
但是在 useState 鉤子期間我不能,我該如何做到這一點?
而且,寫
setQueryBuilder(prev => {return {...prev, category: []}})
只會創建一個名為 category 的新屬性,其中包含一個空陣列
uj5u.com熱心網友回復:
你應該在這里使用的是一個計算屬性 name,這是 ECMAScript 2015 中引入的一個特性。對于你的例子,它看起來像這樣:
{ ...prev, [category]: [] }
請注意,計算屬性本身不參考您的prev物件,并且在技術上與它無關。它只是物件的唯一成員,它會覆寫物件中具有相同名稱的任何屬性,prev因為它是在 prev傳播到物件后定義的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/403746.html
標籤:
上一篇:另一個......函式作為一個React子節點是無效的
下一篇:沒有路由匹配路徑
