Cannot read property 'target' of undefined
The problem is that you are invoking the function in this line:
onChange={this.handleChange()}
All you have to do is simply pass the function as a value to onChange without invoking it.
onChange={this.handleChange}
When you use parenthesis you'd be invoking a function/method instead of binding it with an event handler. Compare the following two examples:
//invokes handleChange() and stores what the function returns in testA.
const testA = this.handleChange()
vs
//stores the function itself in testB. testB be is now a function and may be invoked - testB();
const testB = this.handleChange
If you are passing event using an arrow function, you should try the following:
onChange={(e) => handleChange(e)}