【发布时间】:2020-05-22 13:21:49
【问题描述】:
我试图找到一种方法来了解用户何时连接以及何时断开连接,以便当他断开连接时,我会离线保存他的操作,当他再次连接时,我会将它们发送到服务器。 我正在使用 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() 只是为了测试。不知道是退货问题还是其他问题。 我无法触发这些 ONLINE 和 OFFLINE 操作,有人可以帮我吗?
【问题讨论】:
-
NetInfo.addEventListener内部的回调实际上被调用了吗?state变量是否未定义?
标签: react-native redux redux-saga react-native-community-netinfo redux-offline