我使用NetInfo库检测Internet连接是否可用。它工作正常,但是当Internet从打开更改为关闭时,NetInfo函数中的小吃栏不会显示。在没有互联网的情况下以及从互联网开始的情况下,Snackbar都可以完美显示。 每次将Internet从关闭更改为打开时,从ON更改为OFF时,每次未显示时都会显示小吃栏。所有日志在任何情况下均显示完美。如果我放置一个警报框而不是小吃栏,那么一切都完美。
handleConnectivityChange = (isConnected) => {
NetInfo.isConnected.fetch().done((isConnected) => {
console.log('Dashboard ConnectivityChanged');
console.log('IsConnectedValue:'+ isConnected );
if(isConnected == true)
{
console.log('Dashboard Connected');
Snackbar.show({
title: 'Connected to Internet',
duration: Snackbar.LENGTH_LONG,
action: {
title: 'DISMISS',
color: 'rgb(216,21,88)',
onPress: () => { /* Dismiss snackbar default */ },
},
});
}
else
{
console.log('Dashboard No Internet');
Snackbar.show({
title: 'No Internet Connection',
duration: Snackbar.LENGTH_LONG,
action: {
title: 'DISMISS',
color: 'rgb(216,21,88)',
onPress: () => { /* Dismiss snackbar default */ },
},
});
}
});
}
答案 0 :(得分:0)
我有一个类似的问题。我不确定是什么原因造成的,但作为将其包装在setTimeout中的临时解决方案,似乎可以完成工作,即
setTimeout(() => {
Snackbar.show({
title: 'Connected to Internet',
duration: Snackbar.LENGTH_LONG,
action: {
title: 'DISMISS',
color: 'rgb(216,21,88)',
onPress: () => { /* Dismiss snackbar default */ },
},
});
}, 1000);
此外,为了防止Snackbar导入整个应用程序和代码可重用性,请考虑将 Snackbar.show()放在单独的函数中。
目前,我在整个应用程序中都调用的 utils.js 中有此功能:
export const showSnackbar = ({ title, duration = Snackbar.LENGTH_SHORT, action }) => {
Snackbar.dismiss(); // dismiss if a snackbar is still "alive"
if (!action) {
Snackbar.show({
title: message,
duration,
});
} else {
Snackbar.show({
title,
duration,
action
});
}
};
请注意,一开始,如果先前显示的小吃栏仍在屏幕上,我将其关闭。希望这会有所帮助:)