升级到React Native 0.62.0得到警告标志-“不再需要在Animated组件的ref上调用`getNode()`


9

我刚刚将我的react native应用程序升级到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的反应导航

Answers:


4

升级ro RN 0.62.1之后,我也遇到了这个警告,我根本没有使用getNode()过,原来它是由我使用的一种缺陷引起的,这是react-native-snap-carousel因为他们使用FlatList并可能也使用了getNode()它们。

现在,我们可以在他们的GitHub存储库中找到一个与此相关的未解决问题,这是此问题的链接

更新资料

这也来自package 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()。measureInWindow((winX,winY,winWidth,winHeight)

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


1

如在宣布RN62发行的博客文章中所见,getNode()现已弃用。您可以直接使用ref而无需致电getNode()。看到这个提交


1
问题是,我没有在getNode中使用任何东西,是否可能是我引入的软件包正在使用它?我不确定如何查看哪个软件包在使用它?有一种简单的方法可以找出答案吗?
hellomello

更新-我认为它可能来自于react-navigation的
SafeAreaView

1
是的,警告可能来自您的某些依赖,例如您提到的
Ovidiu Latcu


0

当您将createAnimatedComponent用于组件时会发生此问题,而该组件已存在于动画库中,例如,如果我们将其用于FlatList,则将显示此警告以进行修复,只需直接调用componenty

有关更多详细信息,请在此处输入链接描述


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.