Replacing 'componentWillReceiveProps’ with 'getDerivedStateFromProps’
Wraz z wydaniem React 16.3, wprowadzono kilka nowych metod cyklu życia, a wydanie React 17 spowoduje deprecjację niektórych metod cyklu życia.
getDerivedStateFromProps
jest jedną z tych nowo wprowadzonych metod cyklu życia zastępując componentWillReceiveProps
, która teraz stała się UNSAFE_componentWillReceiveProps
.
getDerivedStateFromProps
jest statyczną metodą, która jest wywoływana po zainicjowaniu komponentu, jak również gdy otrzymuje nowe rekwizyty. Ponieważ jest to metoda statyczna, nie można uzyskać dostępu do this
wewnątrz tej metody, ani do żadnej innej metody klasy. W przeciwieństwie do componentWillReceiveProps
nie możesz ustawić stanu wewnątrz tej metody, więc jedynym sposobem na aktualizację stanu jest zwrócenie obiektu. Jeśli nie chcesz aktualizować żadnego stanu, po prostu zwróć null
.
Zanurzmy się w trochę kodu
Tak działa componentWillReceiveProps
.
Porównujemy nextProps.someValue
z this.props.someValue
i jeśli oba są różne, to wykonujemy jakąś operację, setState
i wywołujemy this.classMethod();
.
Teraz spójrzmy, jak działa getDerivedStateFromProps
.
Otrzymuje dwa parametry nextProps
i prevState
. Jak wspomniano wcześniej, nie można uzyskać dostępu do this
wewnątrz tej metody, więc będziesz musiał przechowywać rekwizyty w stanie, aby porównać nextProps
z poprzednimi rekwizytami. W powyższym kodzie nextProps
oraz prevState
są porównywane, jeżeli oba są różne to zostanie zwrócony obiekt do aktualizacji stanu, w przeciwnym wypadku zostanie zwrócony null
wskazujący, że aktualizacja stanu nie jest wymagana. Jeśli stan się zmieni to zostanie wywołany componentDidUpdate
gdzie możemy wykonać pożądane operacje tak jak to zrobiliśmy w componentWillReceiveProps
.
.
Leave a Reply