javascript - 无法读取未定义的 'onOverviewChange' 的属性

标签 javascript reactjs

我有一个简单的应用程序,其中有一个应用程序组件(父级)和一个编辑组件(子级)。我想做的是当编辑组件中的字段更改时更新状态。但是,当我进行此更改时,出现错误无法读取未定义的属性“onOverviewChange” 在 onChange (bundle.js:57164)。

export default class OverviewEditPane extends React.Component {  

constructor(props) {
  super(props);
  autoBind(this);
}


onOverviewChange(event) {
  let state = this.state;
  let field = event.target.name; 
  let value = event.target.value;
  state[field] = value;
  this.setState({state});

}

render () {
  return (
          <table>
            <FormFields>
            <tbody>
                <tr>
                  <td>{this.props.overview.map(function(P){return <TextInput size='small'  key={P.id} id={P.id} value={P.FName} onChange={() => this.onOverviewChange.bind(this)}  />;})}</td>
                </tr>
                <tr>
                  <td>{this.props.overview.map(function(P){return <TextInput size='small' key={P.id} id={P.id} value={P.LName} onChange={() => this.onOverviewChange.bind(this)} />;})}</td>
                </tr> ...

有人知道我做错了什么吗?

最佳答案

您正在为您的 map 提供常规函数。要么也绑定(bind)它,要么使用箭头函数。

() => this.onOverviewChange.bind(this) 将创建一个返回函数的新函数。确保您在新函数内调用 this.onOverviewChange

<tr>
  <td>
    {this.props.overview.map(P => {
      return (
        <TextInput
          size="small"
          key={P.id}
          id={P.id}
          value={P.FName}
          onChange={(e) => this.onOverviewChange(e)}
        />
      );
    })}
  </td>
</tr>
<tr>
  <td>
    {this.props.overview.map(P => {
      return (
        <TextInput
          size="small"
          key={P.id}
          id={P.id}
          value={P.LName}
          onChange={(e) => this.onOverviewChange(e)}
        />
      );
    })}
  </td>
</tr>

您还必须确保不会改变事件处理程序中的state。你可以这样写:

onOverviewChange(event) {
  this.setState({ [event.target.name]: event.target.value });
}

关于javascript - 无法读取未定义的 'onOverviewChange' 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380082/

相关文章:

reactjs - Redux 无效的钩子(Hook)调用

javascript - 在 html 页面中渲染 react 组件

javascript - 将 ParticleJS 与 Gatsby 结合使用

javascript - 我怎样才能在 highcharts 中保持相同的颜色

javascript - 如何在隐藏输入中的逗号分隔列表中添加/删除单击时的属性值

javascript - 将两个按钮置于父 div 的子 div 中

reactjs - 在 useEffect() 内部使用 useDispatch() 时,操作似乎不会立即调用

javascript - Html 隐藏按钮隐藏所有按钮而不是一个

Javascript 全局变量不起作用,而本地变量起作用

javascript - React 的 IE 11 问题