I am trying to write a (curried?) onChange
event handler on a Component that will receive a key
argument which will let it know which key in the state object to update. The code won't compile, saying 'key' is not defined
.
class App extends Component {
constructor(props) {
super(props);
this.state = {
firstName: null,
lastName: null
}
this.handleChange = this.handleChange.bind(this);
}
handleChange = (key) = (event) => {
console.log(key, event);
}
render() {
return (
<div>
<form>
<input onChange={this.handleChange('firstName')} value={this.state.firstName} />
<input onChange={this.handleChange('lastName')} value={this.state.firstName} />
</form>
{JSON.stringify(this.state, null, 4)}
</div>
);
}
}
You have to pass both the event
as well as the key
on the OnChange
handler.
Do this
<input onChange={this.handleChange.bind(this,'firstName')} value={this.state.firstName} />
And the onChange
should be
handleChange = (key, event) => {
console.log(key, event);
}
This will allow both the event
and key
to be passed and the function will work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With