Обновлен до React Native 0.62.0 Получение предупреждающего знака - больше не нужно вызывать `getNode ()` для ссылки на анимированный компонент


9

Я просто обновляю свое реагирующее нативное приложение до 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 из реагирования навигации

Ответы:


4

Я также пришел к этому предупреждению после обновления 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 / Reaction-native-safe-area-view => index.js

в строке 192 изменить

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

в

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


1

Как видно из сообщения в блоге, объявляющего о выпуске RN62, в getNode()настоящее время не рекомендуется. Вы можете просто использовать refбез звонка getNode(). Смотрите этот коммит .


1
Дело в том, что я ничего не использую с getNode, возможно ли, что пакет, который я добавляю, использует его? Я не уверен, как я могу увидеть, какой пакет использует его? Есть ли простой способ узнать?
Привет

Обновление - я думаю, что это может происходить из 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 () исправит это.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.