Как только componentWillReceiveProps
будет удалено, нам понадобятся некоторые средства для обновления состояния на основе изменения реквизита - сообщество решило ввести новый - статический - метод для обработки этого.
Что такое статический метод? Статический метод - это метод / функция, которая существует в классе, а не в его экземпляре. Самое простое различие, о котором следует подумать, это то, что у статического метода нет доступа к нему, а перед ним ключевое слово static.
Хорошо, но если функция не имеет доступа к этому, как мы можем вызвать this.setState? Ответ - мы не делаем. Вместо этого функция должна возвращать обновленные данные о состоянии, или ноль, если обновление не требуется
Возвращаемое значение ведет себя подобно текущему значению setState - вам нужно только вернуть часть состояния, которая изменяется, все остальные значения будут сохранены.
Вам все еще нужно объявить начальное состояние компонента (либо в конструкторе, либо в виде поля класса).
getDerivedStateFromProps вызывается как при первоначальном монтировании, так и при повторном рендеринге компонента, поэтому его можно использовать вместо создания состояния на основе реквизитов в конструкторе.
Если вы объявите getDerivedStateFromProps
и componentWillReceiveProps
, будет вызван только getDerivedStateFromProps
, и вы увидите предупреждение в консоли.
Обычно вы используете обратный вызов, чтобы убедиться, что какой-то код вызывается при фактическом обновлении состояния - в этом случае, пожалуйста, используйте componentDidUpdate
.