【问题标题】:React Native - undefined is not an object (evaluating '_get2.queue')React Native - undefined 不是一个对象(评估'_get2.queue')
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多