Это невозможно за один шаг, потому что нет ссылки this.state.persons
до тех пор, пока она не будет определена, это ситуация с куриным яйцом.Это не относится к свойствам класса, такая же проблема может возникнуть в других ситуациях:
const foo = {
bar: 1,
baz: foo.bar // there's no foo at this moment.
};
Проблема возникает из-за того, что defaultPersons
не должен быть частью состояния.Кажется, это постоянная, которая не изменилась.В этом случае defaultPersons
может быть отдельным свойством:
class App extends Component {
static defaultPersons = [
{name: "parsa", age: 45},
{name: "cena", age: 98},
{name: "jamil", age: 23}
];
state = {
persons : [...App.defaultPersons]
}
revertToDefaultPersons() {
this.setState(state => ({
...state,
persons : [...App.defaultPersons]
}));
}
}
Или просто константой, определенной вне класса.Это делает вещи проще, но может привести к меньшей тестируемости.