I might be wrong, but to me it looks like you're only missing a spread operator in front of values.map(...)
this.setState({
events: [
...events,
...values.map((value) => {
return {
title: value,
start: this.state.start,
end: this.state.end,
};
}),
],
});
Because values.map(...) returns an array, and seeing that you spread events, I'm guessing you want the mapped values to be spread as well. If I'm misunderstanding something, please let me know and we can look into it further.
Also, unless you destructured events from state earlier (in code you did not paste here), you might want to refer to it as this.state.events.
Edit:
A more detailed explanation about why the spread operator was the solution:
In your state the property events is an array of objects. So when you change it's value, it must again be an array of objects.
Perhaps the most important details is that values.map returns an array.
events is an array of objects. The same is true for values.map.
So [events, values.map] would be an array with two arrays, one in positions 0 and the other in position 1.
But you want an array of objects, not an array of arrays. Therefore, you must spread both of them.
I hope it's clearer now. If you have any more questions, please feel free to ask.