【发布时间】:2023-03-26 05:07:01
【问题描述】:
问题:
我无法动态地更改状态。我需要根据输入字段的“名称”属性更改状态对象的键。
代码:
const addressValue = (e) => {
setAddress(state => ({
...state,
[e.target.name]: e.target.value
}));
};
/****************************************************************
* giving error while typing "Cannot read property 'name' of null"
*****************************************************************/
<form onSubmit={submitHandler}>
<div className="form-group">
<input id="address-line-1" className="form-control" value={address.line1}
onChange={addressValue} name="line1" type="text" placeholder="Line 1" />
</div>
<div className="form-group">
<input id="address-line-2" className="form-control" value={address.line2}
onChange={addressValue} name="line2" type="text" placeholder="Line 2" />
</div>
</form>
对象的初始值
{
line1 : "CA",
line2 : "US"
}
【问题讨论】:
-
阅读here 了解反应合成事件。基本上,因为您使用的是功能更新,
event在使用之前已被重置。解决方案是使用e.persist()或将相关值保存到事件对象之外的其他变量中。或者另一种选择是不使用功能更新,因为您的新状态不是从以前的状态派生的。 -
非常感谢!它奏效了,我学到了一些新东西。我真的很尊重像你这样花时间帮助他人的人。
标签: reactjs react-redux react-hooks