我将nameChangedHandler方法作为对更改后的属性的引用,并最终传递给我在此未提及的人员组件,但事件对象中出现错误。
class App extends Component {
state = {
persons: [
{id: 'abc', name: "Max", age: 28},
{id:'def', name: "Suzi", age: 30},
{id:'fgh', name: "Alex", age:33}
],
otherState: 'some other value',
showPersons: false
}
nameChangeHandler = (event) => {
this.setState({
persons: [
{name: "Max", age: 28},
{name: event.target.value, age: 30},
{name: "Alex", age:26}
]
}
);
}
display_persons = (
<div>
return <Person
changed={()=>this.nameChangeHandler(event)} />
</div>
);
}
return(
<div className="App">
{display_persons}
</div>
);
}
}
export default App;
因为您没有定义event
它认为event
是全局的。onChange
提供event
作为参数,但是您必须定义它。
尝试<Person changed={(event)=>this.nameChangeHandler(event)} />
或<Person changed={this.nameChangeHandler} />
回答评论:
嗯,就像一样() => 2 + someParameter
。这是行不通的,因为someParameter
不知道该箭头功能会产生错误。该组件Person
具有一个属性onChange
,该属性可能只期望一个函数,并向其传递一个参数,这是onChange事件。如果您传递无参数箭头函数(如您的问题),event
则将在本地没有绑定,因此将寻找全局变量。就像console
来自console.log
全球。因此,即使这(randomName) => this.nameChangeHandler(randomName)
将起作用,因为事件已绑定到参数randomName
。
我不知道您的经验,因此,如果您对它的理解有困难,也许可以对“范围”,“参数绑定”或“ React onChange”做一些进一步的研究。也许这些会比我写的更清楚:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句