Depois de começar a trabalhar com o React.js, parece que ele props
deve ser estático (transmitido do componente pai), enquanto as state
alterações são baseadas em eventos. No entanto, notei nos documentos uma referência a componentWillReceiveProps
, que inclui especificamente este exemplo:
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}
Isso parece implicar que as propriedades PODEM mudar em um componente com base na comparação de nextProps
para this.props
. o que estou perdendo? Como os adereços mudam ou estou enganado sobre como isso é chamado?
fonte
componentWillReceiveProps
está desatualizado agora: e substituído por uma combinação degetDerivedStateFromProps
ecomponentDidUpdate
.ADEREÇOS
ESTADO
Um bom exemplo já é fornecido pela Valéry.
fonte
Os adereços podem mudar quando o pai de um componente o renderiza novamente com propriedades diferentes. Eu acho que isso é principalmente uma otimização para que nenhum novo componente precise ser instanciado.
fonte
Truque para atualizar adereços se eles são array:
fonte
Muita coisa mudou com os ganchos, por exemplo,
componentWillReceiveProps
transformados emuseEffect
+useRef
( como mostrado nesta outra resposta do SO ), mas os Props ainda são somente leitura , portanto, apenas o método de chamada deve atualizá-lo.fonte
se você usar
recompose
, usemapProps
para criar novos adereços derivados dos adereços recebidosEdite por exemplo:
fonte