我有一个用户表单,它从道具中提取数据并用它的值填充每个输入字段。当我点击打开一个空表单(就像我添加一个新用户一样)时,我收到错误TypeError: Cannot read property 'language' of undefined
。
状态:
...
constructor(props) {
super(props);
this.state = {
language: this.props.user.language || '',
description: this.props.user.description || ''
}
handleChange = (e) => {
e.preventDefault();
this.setState({[e.target.name]: e.target.value});
console.log(this.state);
}
...
}
输入字段:
<input type="text" placeholder="Language..." id="language" name="language" value={this.state.language} onChange={this.handleChange}/>
如果它无法读取用户对象的值,它应该将值字段显示为空。我试过将 or 值设置为 null 但这会引发相同的错误。
谢谢
我会为此使用componentWillReceiveProps(),因为如果您更改Parent
组件中的用户,它也会更改 中的状态,Child
因为它会触发componentWillReceiveProps()
. 另外,检查this.props.user
您的构造函数中是否存在。
...
constructor(props) {
super(props);
this.state = {
language: this.props.user && this.props.user.language || '',
description: this.props.user && this.props.user.description || ''
}
...
componentWillReceiveProps(nextProps) {
if (nextProps.user) {
this.setState({
language: nextProps.user.language,
description: nextProps.user.description
})
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句