我正在尝试将一些代码从 React Native 类组件移动到功能组件中。原始代码如下所示:
componentDidMount(){
this.state.broadcastSubscriber = DeviceEventEmitter.addListener('event', (intent) =>{ this.broadcastReciever(intent)});
}
到目前为止我所尝试的是不同的排列:
useEffect(() => {
const broadcastSubscriber = DeviceEventEmitter.addListener('event', (intent) =>{ broadcastReciever(intent)});
}}, []);
包括诸如将 broadcastReciever 设为 useCallback 函数之类的内容。到目前为止,broadcastReciever 除了第一次在 useEffect 中运行时从未听到任何声音。
谁能指出我做错了什么?谢谢。
PS:我知道 DeviceEventEmitter 已折旧。
答案 0 :(得分:0)
尝试以下操作:
const broadcastReciever = (intent)=>{ //do you intent code here}
useEffect(() => {
DeviceEventEmitter.addListener('event', broadcastReciever);
return DeviceEventEmitter.removeListener('event', broadcastReciever);
}}, []);
答案 1 :(得分:0)
你可以像这样在 useEffect 中添加事件监听器
useEffect(() => {
const loads = props.navigation.addListener('didFocus', () => {
//do something here on Listner
});
return () => {
loads
}}, [props.navigation]);