React TypeError:无法读取未定义的属性(读取‘name’)
2021-11-01
17866
我正在使用 React 和 Material UI 的 Textfield 组件。试图找到设置表单状态的最佳方法,并且冗余度最小。例如,我有 8 个不同的输入字段。而不是为每个输入设置单独的处理程序,例如 handleFirstName、handleLastName、handleEmail、handleInfo 等。
因此,为了实现这一点,我尝试创建一个如下所示的 handleChange 处理程序:
handleChange = (e) => {
this.setState({
[e.target.name]: e.target.value
});
}
并且在每个组件上,
<TextField
className={classes.formInput}
name="firstName"
onChange={e => this.handleChange(e.target.value)}
required
id=""
type="text"
InputLabelProps={{
shrink: true,
}}
error={!firstName}
helperText="Name is required"
label="First Name"
variant="standard" />
<TextField
className={classes.formInput}
name="lastName"
onChange={e => this.handleChange(e.target.value)}
required
id=""
type="text"
InputLabelProps={{
shrink: true,
}}
label="Last Name"
variant="standard" />
这是我的状态对象
constructor(props) {
super(props);
this.state = {
firstName: '',
lastName: '',
...,
};
}
这些只是输入字段中的两个,但还有大约 6 个字段看起来相同。有什么想法可以解决这个未定义的名称吗?
2个回答
问题是您没有传递完整的事件对象。您只传递了值。这就是您获得未定义名称的原因。
尝试将 onChange 事件更改为以下 -
onChange={this.handleChange
这样,您将在函数的
e
变量中获得完整的事件对象。
Hanly Nadackal
2021-11-01
我认为您需要处理单个功能中的多个输入字段更改。这是可行的。尝试此
520330882
最终何时将Onchange方法传递给字段使用:
931551555
>
Kena Wakwoya
2021-11-01