我试图找到一种方法来了解用户何时连接以及何时断开连接,以便当他断开连接时,我将他的操作离线保存,当他再次连接时,我将它们发送到服务器。我正在使用 Redux Saga、Redux Offline Queue 和 Netinfo 来执行此操作,但我无法弄清楚。
import {put, take} from 'redux-saga/effects';
import {eventChannel} from 'redux-saga';
import NetInfo from '@react-native-community/netinfo';
import {OFFLINE, ONLINE} from 'redux-offline-queue';
export function* startWatchingNetworkConnectivity() {
const channel = eventChannel((emitter) => {
NetInfo.addEventListener((state) => {
emitter(state.isConnected);
});
return () => console.log('Test');
});
try {
while (true) {
const isConnected = yield take(channel);
if (isConnected) {
yield put({type: ONLINE});
} else {
yield put({type: OFFLINE});
}
}
} finally {
channel.close();
}
}
我知道 eventChannel 必须返回一个函数来取消订阅,但我希望它在 App 处于活动状态时永远不会停止,所以我返回了一个 console.log() 只是为了测试。不知道是退货问题还是其他问题。我无法触发那些在线和离线操作,有人可以帮我吗?