【问题标题】:React Material UI Updating TextField ValuesReact Material UI 更新 TextField 值
【发布时间】:2019-01-24 08:00:22
【问题描述】:

我这样开始会话

state = {
    firm: null,
    office: null,
    salesCode: null,
    account: null
}

我的每个 TextField 都显示如下:

<TableCell>
    <TextField
        id="standard-bare"
        defaultValue={items.data[i].firm}
        margin="normal"
        onChange={(e) => this.handleChange(e, items.data[i].id)}
    />
</TableCell>

然后我有一个handleChange事件

handleChange({ event, id }) {
    const { data } = this.state;
    data[id] = event.target.value;
    this.setState({data})
}

当我运行并编辑 TextField 中的文本时,出现以下错误

TypeError: Cannot read property 'target' of undefined
UserDataTable.handleChange:75
  72 |    
  73 |    handleChange({ event, id }) {
  74 |        const { data } = this.state;
> 75 |        data[id] = event.target.value;
     | ^  76 |        this.setState({data})
  77 |    }
  78 | 

我正在尝试对表格实施编辑功能。因此,如果用户编辑文本,我会获得新的更新信息并执行 API 调用以相应地更新值。

【问题讨论】:

  • 应该是handleChange(event, id) {
  • 现在我得到 TypeError: Cannot set property '1' of undefined error

标签: reactjs material-ui


【解决方案1】:

您不是将对象传递给 handleChange 以提取而是更多的单个参数

改变

handleChange({ event, id }) {

 handleChange(event, id) {

编辑:

状态中没有定义数据,但您正在访问它并尝试通过不正确的 id 为数据对象设置输入值。应该是下面这样的

     handleChange(event, id) {
        this.setState({
              [id]: event.target.value
        })
    }

【讨论】:

  • 现在我得到 TypeError: Cannot set property '1' of undefined error
  • 我认为它正在为所有更改发送 id,这是一个问题,它需要更新我正在更新的任何字段,对吗?就像我要更新公司一样,它需要更新该特定公司的状态..
  • 我有这个类似于你输入的内容 handleChange({ event, id }) { const { data } = this.state;数据[id] = event.target.value; this.setState({data}) }
猜你喜欢
  • 1970-01-01
  • 2020-03-13
  • 2020-11-01
  • 2020-12-09
  • 2021-08-30
  • 2021-09-05
  • 2016-12-21
  • 2021-10-16
  • 2021-02-11
相关资源
最近更新 更多