【发布时间】:2021-06-02 19:40:41
【问题描述】:
我从 API 中提取数据,然后允许用户在 react 中修改该数据,之后我会将更新后的状态发送到服务器。
我的 API 提供以下 JSON:
{
"id": 1,
"title": "Test Campaign",
"impressions": 12,
}
我的组件看起来像这样:
function Campaign() {
const [data, setData] = useState([])
useEffect(async () => {
const result = await axios('/campaigns/1')
setData(result.data);
}, []);
const handleChange = (event) => {
setData({[event.target.name]: event.target.value});
}
return (
<div className='row'>
<div className='col-12'>
<h2>{ data.title }</h2>
<input
type='number'
value={data.impressions}
name='impressions'
onChange={e => handleChange(e)}
/>
</div>
</div>
)
}
但是,运行此代码会导致所有处于data 状态的键被覆盖(因此我的h2 标记不显示任何内容)。我的理解是 React State 进行了浅合并,所以在这种情况下只会更新 impressions key:value?
【问题讨论】:
标签: javascript reactjs use-state