英文:
Select field value not changing on setState in onChange
问题
我的选择值来自 data.RowCount.Value
。在下一次渲染之前更改该值不会反映出来。
const [data, setData] = ({RowCount: {"Value": 5}})
...
<TextField
select
value={data.RowCount.Value}
onChange={(e) => {
setData((prev) => {
prev.RowCount.Value = e.target.value;
return prev;
});
}}>
<MenuItem>Item</MenuItem>
</TextField>
英文:
My Select value is gotten from data.RowCount.Value
. Changing the value is not reflected until the next render.
const [data, setData] = ({RowCount: {"Value": 5}})
...
<TextField
select
value={data.RowCount.Value}
onChange={(e) => {
setData((prev) => {
prev.RowCount.Value = e.target.value;
return prev;
});
}}>
<MenuItem>Item</MenuItem>
</TextField>
答案1
得分: 1
您正在更改状态,不要更改状态
setData((prev) => ({
...prev
RowCount: {
...prev.RowCount,
value: e.target.value
}
}))
英文:
You're mutating state, don't mutate state
setData((prev) => ({
...prev
RowCount: {
...prev.RowCount,
value: e.target.value
}
}))
答案2
得分: 0
你需要更新代码如下:
setData({RowCount: {"value": e.target.value}}) 或
setData(prev => {return {...prev, RowCount: {"value": e.target.value}}})
英文:
you need to update code like this
setData({RowCount: {"value": e.target.value}}) or
setData(prev => {return {...prev, RowCount: {"value": e.target.value}}})
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论