當使用useState定義的狀態變量是一個具有屬性的對象時,如何更新它可能有些困惑。
你不能只是更新對象,否則組件將不會重新渲染。
我找到的一種模式涉及創建一個帶有一個屬性的臨時對象,並使用對象解構來從現有的兩個對象中創建一個新對象:
const [quizAnswers, setQuizAnswers] = useState({})
...
const updatedValue = {}
updatedValue[quizEntryIndex] = answerIndex
setQuizAnswers({
...quizAnswers,
...updatedValue
})
同樣的技巧也可以用於刪除屬性:
const copyOfObject = { ...quizAnswers }
delete copyOfObject['propertyToRemove']
setQuizAnswers({
...copyOfObject
})