在你的观点中,这是正确的方法:
首先我遇到错误:这里:
const [isNetwork, setIsNetwork] = useState(true);
const [isChangeNetwork, setIsChangeNetwork] = useState(false);
useEffect(() => {
NetInfo.fetch().then(({ isConnected, isInternetReachable }) =>
setIsNetwork(isConnected && isInternetReachable)
);
const unsubscribe = NetInfo.addEventListener(
({ isConnected, isInternetReachable }) => {
setIsNetwork(isConnected && isInternetReachable);
setIsChangeNetwork(true);
});
return () => unsubscribe.remove();
}, []);
...
<Snackbar
visible={isChangeNetwork}
onDismiss={() => setIsChangeNetwork(false)}
duration={3000}
theme={{ colors: { inverseSurface: isNetwork ? 'green' : 'red' } }}>
{isNetwork ? "Internet" : "No Internet"}
</Snackbar>
首先我遇到错误:这里:
return () => unsubscribe.remove();
Visual Studio 也告诉我:Property 'remove' does not exist in type 'NetInfoSubscription'.ts(2339)
你能给我提供一个更好的方法吗?
一个问题是,当启动应用程序时,即使有互联网连接,Snackbar 也会出现并显示有互联网。
相反,我希望 Snackbar 只在以下情况下出现:
- 启动应用程序时没有互联网连接
- 状态发生变化,例如以下情况:
a) 首先有互联网连接(然后不会出现任何东西),然后没有互联网连接(然后 Snackbar 出现)
b) 首先没有互联网连接(然后 Snackbar 出现),然后有互联网连接(然后 Snackbar 出现)
你能帮帮我吗?