【发布时间】:2020-09-29 12:30:42
【问题描述】:
当使用 useState 挂钩存储对象列表时(例如 [{ a:1 }, { a:2 }]),如果我更改列表的元素(对象)的内容,请做出反应 DO NOT 更新组件。
例如在下面的代码中,
如果我按下第一个按钮,第一个 h1 组件的内容将为 24。但是即使我按下第一个按钮,第一个 h1 组件组件不要更新。
如果我在按下第一个按钮后按下第二个按钮,组件做更新。
const [tempList, setTempList] = useState([
{ a: 1 },
{ a: 2 }
])
return (
<div>
{
tempList.map((item, idx) => {
return <h1>{item.a}</h1>
})
}
<button onClick={() => {
let temp = tempList;
temp[0]['a'] = 24
setTempList(temp)
}}>modify list</button>
<button onClick={() => {setTempList(...tempList, {a: 3})}}>insert list</button>
</div>
)
我已经使用了 useReducer 钩子。但这不是解决方案。 如何更新组件?
【问题讨论】:
标签: javascript reactjs components react-hooks