开发者问题收集

为什么我无法读取事件中的属性值

2017-09-29
61

我试图访问我在调用该函数时使用的材料 UI 文本输入的值,但我还需要传递其他参数,

这是在其父类中调用该函数的代码。

<Input
    value={this.props.appState.application.Person[0].Forename}
    className={classes.input}
    onChange={this.testHandleChange(0, 'Person')}
    name="Forename"
    inputProps={{
      'aria-label': 'Description',
    }}
/>

这是它在父类中调用的函数

testHandleChange = event => (userIndex, object) => {
    console.log(`userIndex: ${userIndex}`);
    console.log(`object: ${object}`);
    console.log(`value: ${event.target.value}`);
};

它一直说意外使用了全局“事件”。在输入上但不在函数上,我该如何解决这个问题?

编辑:所以我稍微改变了一些东西,得到了一个更好的错误,我想我会改变上面的代码。

这现在给了我错误

cannot read property 'value' of undefined

2个回答

您正在编写:

event => (userIndex, object) =>

但这意味着您正在返回一个接受 (userIndex, object) 参数的函数并将其传递给 onChange。 但它必须是:

(userIndex, object) => event =>

在这里,您返回一个接受事件作为参数的函数。这就是 onChange 所期望的。

Daniel
2017-09-29

解决这个问题的更好方法是使用匿名函数捕获事件并将其作为参数传递:

onChange={(event) => { this.testHandleChange(event, 0, 'Person'); }}

然后在您的处理程序中:

testHandleChange = (event, userIndex, object) => { ... }
Fawaz
2017-09-29