Модернізовано до React Native 0.62.0 Отримання попереджувального знаку - "Виклик` getNode () "на посилання на компонент Animated більше не потрібен


10

Я просто модернізую свій власний додаток для реагування до 0,62,0, і тепер моя програма продовжує отримувати цей попереджувальний знак

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.

Я не впевнений, чому ця проблема з'являється? Може хтось, будь ласка, пояснить?

Я також бачу Стек

ref.getNode |
createAnimatedComponent.js:129:20

SafeView#_updateMeasurements | index.js:192:14

SafeView#componentDidUpdate | index.js:154:9

Оновлення

Я вважаю, що це може надходити від SafeAreaView від реакції-навігації

Відповіді:


5

Я також прийшов до цього попередження після оновлення ro RN 0.62.1, і я його взагалі не використовував getNode(), виявляється, це прийшло із залежностей, які я використовую, викликав, react-native-snap-carouselоскільки вони будують його з FlatList і, можливо, використовують getNode()також.

І тепер є відкрите питання про це в їхньому репортажі GitHub, який ми можемо слідувати, ось посилання на цю проблему

Оновлення

це також прийшло з пакета react-native-safe-area-view, можливо, ваша програма використовує цей пакет, і тепер вони випустили нову версію, щоб виправити getNode()застарілість, дивіться цей PR

тому замість того, щоб виправляти файл безпосередньо самостійно, вам просто потрібно оновити пакет, просто запустіть: npm i react-native-safe-area-view

Сподіваюся, що це допоможе :)


2

Щоб швидко виправити це, перейдіть до node_modules / react-native-safe-area-view => index.js

по лінії 192 зміна

this.view.getNode (). мераInWindow ((winX, winY, winWidth, winHeight)

до

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


Замість цього ви можете просто оновити модулі вузлівnpm i react-native-safe-area-view
picacode

1

Як видно з допису в блозі, який оголошує про вихід RN62, getNode()тепер застарілий. Ви можете просто користуватися refбез дзвінків getNode(). Дивіться цю комісію .


1
Справа в тому, що я не використовую нічого з getNode, чи можливо пакет, який я приношу, використовує його? Я не впевнений, як я бачу, який пакет використовує його? Чи є простий спосіб це дізнатися?
hellomello

Оновлення - я думаю, що воно може надходити від SafeAreaView з реагування-навігації
hellomello

1
так, попередження може надходити від деяких ваших залежностей, як ви згадуєте
Овідіу Латку

0

getNode() тепер застаріла після випуску RN62, ви можете просто знизити RN до 0,61,5, і ви більше не отримаєте цих попереджень.


0

ця проблема станеться, коли ви використовуєте createAnimatedComponent для компонентів, тоді як вони вже існують в анімованій бібліотеці, наприклад, якщо ми використовуємо її для FlatList, це попередження буде відображатися для виправлення просто виклику компонентів безпосередньо

для більш детальної інформації введіть опис посилання тут


0

змінити

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

до

return this._carouselRef;

* Видалення getNode () виправить це.


0

Якщо ви користуєтесь, react-native-snap-carouselви можете виправити це, змінивши модуль вузла локально.

спочатку перейдіть до

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

змінити

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

в

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

і, нарешті, змінити свою _getWrappedRefфункцію на

_getWrappedRef () {
 return this._carouselRef
}

Це припинить попередження, поки ми не оновлюємо цей пакет.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.