【发布时间】:2020-01-03 16:59:16
【问题描述】:
我想用另一个页面的数据更新状态。尝试更新状态后出现错误:
index.js:1375 警告:组件正在将文本类型的受控输入更改为不受控制。输入元素不应从受控切换到不受控(反之亦然)。决定在组件的生命周期内使用受控输入元素还是不受控输入元素。
如何使用钩子正确更新状态??
const [data, changeData] = useState({
name: '',
email: '',
phone: '',
cv: '',
documents: '',
rodo: false,
regulations: false,
});
useEffect(() => {
if (location.data) {
changeData((prevState) => {
return { data: { name: location.data.name } };
});
}
}, []);
输入
<div className='form-control'>
<label htmlFor='name'>
<i className='fas fa-user'></i>
</label>
<input
value={data.name}
id='name'
name='name'
onKeyPress={handleKeyPress}
onChange={(e) => handleChangeData(e, 'name')}
type='text'
placeholder='Imię i nazwisko'
/>
</div>
【问题讨论】:
-
显示的代码中没有输入。
-
您应该使用
useReducer而不是useState用于复杂对象offical docs
标签: javascript html reactjs react-hooks