Uaktualniono do React Native 0.62.0 Otrzymywanie znaku ostrzegawczego - „Wywoływanie„ getNode () `w odniesieniu do komponentu Animated nie jest już konieczne


10

Właśnie uaktualniłem moją reagującą aplikację natywną do wersji 0.62.0, a teraz moja aplikacja nadal wyświetla ten znak ostrzegawczy

ReactNativeFiberHostComponent: Calling `getNode()` on the ref of an Animated component 
is no longer necessary. You can now directly use the ref instead. 
This method will be removed in a future release.

Nie jestem pewien, dlaczego pojawia się ten problem? Czy ktoś może wyjaśnić?

Widzę też stos

ref.getNode |
createAnimatedComponent.js:129:20

SafeView#_updateMeasurements | index.js:192:14

SafeView#componentDidUpdate | index.js:154:9

Aktualizacja

Wierzę, że może to pochodzić z SafeAreaView z nawigacji reagowania

Odpowiedzi:


5

Doszedłem również do tego ostrzeżenia po uaktualnieniu ro RN 0.62.1 i wcale go nie używałem, getNode()okazuje się, że pochodziło ono z zależności, których używam, wywoływanych, react-native-snap-carouselponieważ budują je za pomocą FlatList i prawdopodobnie używajągetNode() także.

A teraz w repozytorium GitHub jest na ten temat otwarty problem, który możemy śledzić, oto link do problemu

Aktualizacja

to również pochodzi z pakietu react-native-safe-area-view, być może Twoja aplikacja korzysta z tego pakietu, a teraz wydali nową wersję, aby naprawić getNode()wycofanie, zobacz ten PR

więc zamiast naprawiać plik bezpośrednio, wystarczy zaktualizować pakiet, po prostu uruchom: npm i react-native-safe-area-view

Mam nadzieję, że to pomoże :)


2

Aby to szybko naprawić, przejdź do: node_modules / reag-native-safe-area-view => index.js

w linii 192 zmiana

this.view.getNode (). MeasureInWindow ((winX, winY, winWidth, winHeight)

do

this.view.measureInWindow ((winX, winY, winWidth, winHeight)


Zamiast tego możesz teraz po prostu zaktualizować moduły węzłównpm i react-native-safe-area-view
picacode

1

Jak widać w blogu informującym o wydaniu RN62, getNode()jest już przestarzałe. Możesz po prostu używać refbez połączenia getNode(). Zobacz to zatwierdzenie .


1
Chodzi o to, że nie używam niczego z getNode, czy możliwe jest, że pakiet, który przynoszę, używa go? Nie jestem pewien, jak mogę zobaczyć, który pakiet go używa? Czy jest łatwy sposób, aby się dowiedzieć?
hellomello

Aktualizacja - myślę, że może pochodzić z SafeAreaView z nawigacji reagowania
hellomello

1
tak, ostrzeżenie może pochodzić z niektórych twoich zależności, jak wspomniałeś
Ovidiu Latcu

0

getNode() jest teraz przestarzałe w momencie wydania RN62, możesz po prostu obniżyć RN do 0.61.5 i nie będziesz już otrzymywać tych ostrzeżeń.


0

problem wystąpi, gdy użyjesz createAnimatedComponent dla komponentów, podczas gdy już istnieje on w animowanej bibliotece, na przykład jeśli użyjemy go do FlatList, to ostrzeżenie będzie wyświetlane w celu naprawy, po prostu wywołaj składnik bezpośrednio

po więcej szczegółów wpisz opis linku tutaj


0

zmiana

return this._carouselRef && this._carouselRef.getNode && this._carouselRef.getNode();

do

return this._carouselRef;

* Usunięcie getNode () to naprawi.


0

Jeśli używasz react-native-snap-carousel , możesz to naprawić, modyfikując lokalnie moduł węzła.

najpierw idź do

 ./node_modules/react-native-snap-carousel/src/Carousel.js

zmiana

const AnimatedFlatList = FlatList ? Animated.createAnimatedComponent(FlatList) : null;
const AnimatedScrollView = Animated.Animated.createAnimatedComponent(ScrollView);

w

const AnimatedFlatList = FlatList ? Animated.FlatList : null;
const AnimatedScrollView = Animated.ScrollView;

i wreszcie zmień _getWrappedReffunkcję na

_getWrappedRef () {
 return this._carouselRef
}

To zatrzyma ostrzeżenie, dopóki nie otrzymamy aktualizacji tego pakietu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.