Po rozpoczęciu pracy z React.js wygląda na to, że props
mają być statyczne (przekazywane z komponentu nadrzędnego), a state
zmiany oparte na zdarzeniach. Jednak zauważyłem w dokumentach odniesienie componentWillReceiveProps
, które konkretnie obejmuje ten przykład:
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}
To zdaje się sugerować, że właściwości można zmienić na komponencie w oparciu o porównania nextProps
do this.props
. czego mi brakuje? Jak zmieniają się rekwizyty, czy też mylę się co do tego, jak to się nazywa?
źródło
componentWillReceiveProps
jest już przestarzały: i zastąpiony przez kombinacjęgetDerivedStateFromProps
icomponentDidUpdate
.PROPS
STAN
Dobry przykład podał już Valéry.
źródło
Rekwizyty mogą się zmieniać, gdy element macierzysty komponentu ponownie renderuje komponent z różnymi właściwościami. Myślę, że jest to głównie optymalizacja, więc nie trzeba tworzyć instancji żadnego nowego komponentu.
źródło
Sztuczka, aby zaktualizować rekwizyty, jeśli są tablicami:
źródło
Wiele się zmieniło w przypadku haków, np. Zmieniło
componentWillReceiveProps
się wuseEffect
+useRef
( jak pokazano w tej innej odpowiedzi SO ), ale rekwizyty są nadal tylko do odczytu , więc tylko metoda wywołująca powinna je zaktualizować.źródło
jeśli używasz
recompose
, użyjmapProps
do tworzenia nowych rekwizytów pochodzących z przychodzących rekwizytówEdytuj na przykład:
źródło