React-Native Android 操作错误:“未定义不是对象(正在评估“action.type”)”

IT技术 javascript android reactjs react-native
2021-05-12 01:25:06

我正在使用 React Native v.43.0-rc.3,当我点击切换按钮时,我的 Android 模拟器中出现此错误:

undefined is not an object (evaluating 'action.type')

我的切换按钮连接到以下功能/action/index.js

export const toggleUpdateSwitch = (showUpdates) => {
  // error goes away when i remove this line below ----+v
  AnalyticsTracker.trackEvent({"category": "profile", "action" : "toggle", "label": "section/updates"})

  async dispatch => {
    ToastAndroid.show(TOGGLE_UPDATES_NO_DATA_MESSAGE, ToastAndroid.LONG, ToastAndroid.CENTER);
    const response = await fetch('http://my.url.com/doSomething', { headers, method: 'GET' });
  }
}

所以我添加了上面的行(AnalyticsTracker),这就是我切换时导致错误的原因。有任何想法吗?

模拟器错误截图:

模拟器错误 action.type 未定义

1个回答

我以前遇到过这样的问题。您必须将跟踪器代码放在异步调度中。根据我的经验,每当我的函数中有异步调度时,如果我在它之外有同步代码,我总是会收到此错误。我不清楚为什么会发生这种情况,但我知道这对我来说是固定的。

我的理论是,当您执行异步操作时,您正在启动一个不同的线程。通过在它之外有同步代码,主线程上发生了一些事情,但它没有返回任何东西。因此,当您执行 action.type 时,您得到 undefined 不是一个对象,因为默认情况下,我认为 RN 期望返回一个具有 type 属性的对象,但您没有返回任何内容。