我是反应本机新手,当我运行反应本机项目时,我收到此警告或错误。
\n ReactNativeJS \xe2\x96\xb6\xef\xb8\x8e 'EventEmitter.removeListener(\\'change\\', ...): Method has\n been deprecated. Please instead use `remove()` on the subscription returned by \n `EventEmitter.addListener`. \nRun Code Online (Sandbox Code Playgroud)\n
小智 17
一旦您确定已弃用的使用发生在您无法控制的依赖项中,就可以消除这些警告。在您App.js或其他地方添加:
import { LogBox } from "react-native";
LogBox.ignoreLogs(["EventEmitter.removeListener"]);
Run Code Online (Sandbox Code Playgroud)
您必须小心使用它,并且可能在将来的某个时候将其删除,因为它会使所有警告静音,EventEmitter.removeListener甚至包含对您可能很重要的警告。
Kie*_*ood 11
有一个上游变化,在react-native@0.65.0中,他们弃用了旧的api,转而使用更简洁的名称,因此removeListener()变成了remove().
这意味着您使用的任何调用这些的包都会产生警告,直到它们发布新的包版本来解决这个问题。
您对 Bharat Varma 的评论似乎表明您正在使用https://github.com/react-native-community - 他们很长一段时间没有发布新版本,并且有针对同一问题的公开 Pull 请求(目前尚未解决)。
现在摆脱它的最佳选择是使用patch-package来修改带有上面链接的 PR 修复的节点模块(只需更改removeListener 以删除它们导出的 useDeviceOrientation 挂钩),并使用它直到它们合并修复此问题。
小智 11
根据官方文档,从 React Native Version 0.65+ 开始,removeListener 已被弃用。您现在可以使用remove():
useEffect(() => {
const subscription = AppState.addEvenListener('change', ()=>{})
return () => {
subscription.remove()
}
}, [])
Run Code Online (Sandbox Code Playgroud)
小智 5
这里\xe2\x80\x99是如何删除事件监听器的。
\nconst susbcription = EventEmitter.addListener(\xe2\x80\x98change\xe2\x80\x99,some_callback_function)
删除监听器。不是 EventEmitter.removeListener。你这样做
\nsubscription.remove()
| 归档时间: |
|
| 查看次数: |
28585 次 |
| 最近记录: |