I'm working on a React app where you have a have a form where you can add a new employee and X number of dependents.
In the form, I set a default state like this:
class NewEmployee extends Component {
state = {
employees: [],
costEstimates: { ...emptyCosts },
relationshipOptions: [],
newEmployee: { ...emptyEmployee }
};
That emptyEmployee
is coming from a const in a separate file, and it looks like this:
export const emptyEmployee = { firstName: '', lastName: '', dependents: [] };
I do this purely to just try and keep the initial state looking tidy in the code.
My problem is that the dependents
array in emptyEmployee
is getting modified, and I don't understand how. This is the function getting called when the user clicks to add a new dependent:
handleNewDependent = () => {
const newEmployee = { ...this.state.newEmployee };
// blank dependent for now
const dependent = {
firstName: '',
lastName: ''
};
newEmployee.dependents.push(dependent);
this.setState({ newEmployee });
};
I've pinpointed that this is when the dependents
array of my emptyEmployee
object gets modified. I don't understand how, since I use the spread operator to make a copy.