React native android undefined 不是一个在 IOS 中有效的函数

React native android undefined is not a function works in IOS

在 IOS 中工作,当调试器为 运行 时在 Android 中工作,但不能通过 Android 模拟器工作。我通过 react-native log-android 收到此消息,基本上我没有返回屏幕:

12-02 10:39:58.511 22502 24204 W ReactNativeJS: TypeError: undefined is not a function (near '...}).flat()

Android Picture

IOS Picture

这是我正在使用的获取函数:

import axios from 'axios';

export const getData = async url => {
  try {
    const response = await axios.get(url);
    const data = response.data;
    return data;
  } catch (error) {
    console.log(error);
  }
};

export default getData;

在我的 componentDidMount 内部,我使用上面的 GetData 函数调用端点:

componentDidMount() {
    const teamsAPI = 'https://statsapi.web.nhl.com/api/v1/teams';

    getData(teamsAPI).then(teams => {
      const teamData = teams.teams
        .map(({ id, name }) => ({
          teamId: id,
          teamName: name
        }))
        .flat()

      this.setState({
        teams: teamData
      });
    });
  }

所有内容都已移至 REDUX,但我今天回顾了我的一个分支,其中包含上面共享的更基本的代码,并且当时也遇到了此代码的问题。不幸的是直到现在才意识到代码编译的所有差异。明白这个问题可能是因为 2 个编译器,但不知道如何解决这个问题/为什么一个编译器会出现类型错误,而另一个编译器不会。

由于此处提到的内容,我认为它适用于调试器:

React Native behavior different in simulator / on device / with or without Chrome debugging

编辑:想提一下我已经重置了缓存并删除了构建文件夹并重建了

我尝试了您的代码,在 Android 和 iOS 中拒绝承诺对我来说都很开心。它是由 .flat() 删除它阻止承诺拒绝发生引起的。

查看您在那里映射的数据,似乎不需要展平数据,因为它作为一个对象数组返回,其中没有其他数组。

删除 .flat() 对您来说可能是一个可行的解决方案吗?

您可以在此处查看有关 .flat() 的更多信息以及它如何仍处于实验阶段

我也会考虑在你的 getData 函数出错时返回一些东西,或者可能使用 promise 来处理错误。