Look at the form to edit phone numbers in Google Contacts.
Let's say my state looks like:
this.state = {
phones: [
{
country: 'US',
label: 'Home',
number: '555'
}
],
};
My HTML would look like, in a loop and simplified to be all text inputs:
<input type="text" value={this.state.phones[index].country} onChange={this.handleChange} />
<input type="text" value={this.state.phones[index].number} onChange={this.handleChange} />
<input type="text" value={this.state.phones[index].label} onChange={this.handleChange} />
How would you implement the handleChange to call setState while supporting the fact that it is an array, and that each item in the array has multiple properties?
I saw pieces of answers in other questions, but nothing complete.

Phonewhich handles it's own state