0

我试图找到一种方法来了解用户何时连接以及何时断开连接,以便当他断开连接时,我将他的操作离线保存,当他再次连接时,我将它们发送到服务器。我正在使用 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() 只是为了测试。不知道是退货问题还是其他问题。我无法触发那些在线和离线操作,有人可以帮我吗?

4

1 回答 1

0

在 offlineMiddleware.js 中将 getState() 更改为 getOffline().toObject() 为我解决了这个问题。

于 2020-06-16T10:44:25.207 回答