我是react native的新手,当我运行react native项目时,我收到了这个警告或错误。
ReactNativeJS ▶︎ 'EventEmitter.removeListener(\'change\', ...): Method has
been deprecated. Please instead use `remove()` on the subscription returned by
`EventEmitter.addListener`.
5条答案
按热度按时间vsdwdz231#
一旦你确定在你无法控制的依赖项中发生了不推荐使用的情况,就有可能使这些警告静音。在你的
App.js
或其他地方添加:您必须小心使用它,并且可能在将来的某个时候将其删除,因为它将使所有包含
EventEmitter.removeListener
的警告静音,即使这些警告对您可能很重要。5n0oy7gb2#
有一个上游的变化,在react-native@0.65.0中,他们弃用了旧的API,使用了一个更简洁的名称,所以
removeListener()
变成了remove()
。这意味着您使用的任何调用这些的软件包都将产生警告,直到他们发布新的软件包版本来解决这个问题。
你对Bharat Varma的评论似乎暗示你正在使用https://github.com/react-native-community--他们已经很长时间没有发布新版本了,而且有open Pull Requests针对这个问题(目前还没有解决)。
现在最好的解决办法是使用patch-package修改节点模块,并使用上面链接的PR修复(只需更改removeListener,以删除它们导出的useDeviceOrientation钩子),并使用此修复,直到它们合并了对此的修复。
sy5wg1nm3#
根据官方文件,截至React Native Version 0.65+,removeListener已经降价,现在可以使用remove()了:
6jjcrrmo4#
下面介绍如何删除事件侦听器。
const susbcription = EventEmitter.addListener(‘change’,some_callback_function)
删除监听程序。不删除EventEmitter.removeListener。请执行此操作
subscription.remove()
sqxo8psd5#
你可以在编码的时候用这个方法来解决你的问题。修改库代码添加补丁不是很好的选择。