为什么我无法在事件

时间:2017-09-29 09:30:41

标签: javascript reactjs jsx

我正在尝试访问我在调用函数时使用的材料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}`);
};

它一直在说意外使用全球事件&#39;。在输入而不是功能我如何解决这个问题?

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

这现在给我错误

  

无法读取属性&#39;值&#39;未定义的

2 个答案:

答案 0 :(得分:3)

你在写:

event => (userIndex, object) =>

但这意味着你要返回一个带有(userIndex,object)参数并将其传递给onChange的函数。 但必须是:

(userIndex, object) => event =>

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

答案 1 :(得分:0)

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

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

然后在你的处理程序中:

testHandleChange = (event, userIndex, object) => { ... }