react-native - 在 react-native 中离开屏幕时,我应该如何断开与 signalR 的连接
问题描述
在我的应用程序中,我有几个使用 signalR 这样的屏幕。该函数称为 useEffect 函数,它可以工作:
const setupSignalR = () =>
{
SecureStore.getItemAsync("token").then(tk => {
let connection = new HubConnectionBuilder()
.withUrl("URL", {
accessTokenFactory: () => tk
})
.build();
connection.on("Update", function (message) {
//DOSTUFF
});
connection.start()
.then(() => console.log("connection started"))
.catch(err => console.log("connecting hub failed err is : ", err));
});
}
问题是,如果我离开屏幕,连接保持打开状态,当我返回屏幕时,我会打开另一个连接,这意味着我现在同时打开了 2 个连接。我知道 signalR 有一个可以调用的停止函数,所以我尝试使用这样的导航侦听器,但没有调用它们:
useEffect(() =>
{
Load();
setupSignalR();
const unsubscribe = navigation.addListener('focus', () => {
});
const sub = navigation.addListener('blur', () => {
console.log("============");
});
}, [navigation]);
我通常通过按后退按钮或使用navigation.navigate();
解决方案
return () => {
connection.stop();
}
作品。
推荐阅读
- android - 找不到“反应原生”的调试适配器
- java - firebase.database.DatabaseException:反序列化时需要一个 Map,但得到一个类 java.util.ArrayList
- flutter - AutoCompleteTextField 右文本对齐
- .net - MSB3021 在 Visual Studio 中运行 Service Fabric 应用时无法复制文件找不到部分路径错误
- c# - How to overwrite rows in the database when passing values from Console Application?
- ios - Push new UIViewController with transparency
- maven - Maven build parent before other modules
- java - ClassCastException is caused by casting JobRepositoryFactoryBean to JobRepository when Spring boot starts a batch job
- sql-server - System.InvalidCastException during FindByText in dropdownlist
- osgi - OSGI Bundle resolved state issue