React native 如何使用React Navigation 5复制OnDiBlur或onWillBlur?

React native 如何使用React Navigation 5复制OnDiBlur或onWillBlur?,react-native,react-navigation,React Native,React Navigation,正如他们指出的,他们已经去掉了4个导航事件侦听器,而是决定使用 但是我在React Navigation 5中遇到的问题是,blur事件没有按照我的需要工作!以前,我可以添加一个onWillBlur侦听器,在用户临时离开(而不是关闭)应用程序时执行一些操作(例如关闭套接字连接,然后在用户重新进入应用程序时重新打开) 我如何为这样的用例复制onWillBlur或ondiblur事件?我不需要知道用户点击按钮后进入屏幕B后,屏幕A是否模糊。您可以使用挂钩UseFocuseEffect 编辑: 添加

正如他们指出的,他们已经去掉了4个导航事件侦听器,而是决定使用

但是我在React Navigation 5中遇到的问题是,
blur
事件没有按照我的需要工作!以前,我可以添加一个
onWillBlur
侦听器,在用户临时离开(而不是关闭)应用程序时执行一些操作(例如关闭套接字连接,然后在用户重新进入应用程序时重新打开)


我如何为这样的用例复制
onWillBlur
ondiblur
事件?我不需要知道用户点击按钮后进入屏幕B后,屏幕A是否模糊。

您可以使用挂钩UseFocuseEffect

编辑:

添加了来自React导航的示例

从'@react navigation/native'导入{useFocusEffect};
函数配置文件(){
聚焦效应(
React.useCallback(()=>{
//当屏幕对焦时做些什么,对焦
return()=>{
//当屏幕未聚焦时,请执行以下操作:模糊
//对于清除函数很有用
};
}, [])
);
返回;
}
编辑2:

我没有在home按钮上测试它,但我发现一个帖子也有帮助

我希望这次你对我的回答感到满意

这里有一个工作示例:

从“React”导入React
从“react native”导入{Text,AppState}
常量MyComponent=()=>{
常量[appState,setAppState]=React.useState(appState.currentState)
React.useffect(()=>{
AppState.addEventListener('change',handleChanges)
setAppState(AppState.currentState)
返回AppState.removeEventListener('change')
},[])
const handleChanges=(nextapstate)=>{
if(appState.match(/inactive | background/)和&nextapstate=='active'){
log('应用程序已到达前台!');
}否则{
log('应用程序已进入后台!');
//在这里开始您的后台任务
}
setAppState(nextAppState)
}
返回{appState}
}

这不会让您知道用户单击主页按钮离开应用程序后屏幕是否模糊。