После начала работы с React.js кажется, что он props
должен быть статическим (передаваться из родительского компонента), а state
изменения основаны на событиях. Тем не менее, я заметил в документации ссылку componentWillReceiveProps
, которая конкретно включает в себя этот пример:
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}
Кажется, это подразумевает, что свойства МОГУТ изменяться для компонента на основе сравнения nextProps
с this.props
. Чего мне не хватает? Как меняется реквизит, или я ошибаюсь, откуда это вызывается?
источник
componentWillReceiveProps
устарел сейчас и заменен комбинациейgetDerivedStateFromProps
иcomponentDidUpdate
.РЕКВИЗИТ
ШТАТ
Хороший пример уже предоставлен Валери.
источник
Реквизит может измениться, когда родительский компонент компонента снова отображает его с другими свойствами. Я думаю, что это в основном оптимизация, поэтому не нужно создавать новые компоненты.
источник
Хитрость для обновления реквизита, если он является массивом:
источник
Многое изменилось с хуками, например,
componentWillReceiveProps
превращено вuseEffect
+useRef
( как показано в этом другом ответе SO ), но Props по-прежнему доступны только для чтения , поэтому обновлять его должен только метод вызывающей стороны.источник
если вы используете
recompose
, используйтеmapProps
для создания новых реквизитов, полученных из входящих реквизитовРедактировать например:
источник