React原生android undefined不是一个在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()

安卓图片

IOS图片

这是我正在使用的提取功能:

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;

在我的组件DidMount内部,我使用上面的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,但我今天回顾了我的一个分支,上面分享了更基本的代码,当时这个代码也有问题。不幸的是,到目前为止还没有意识到代码编译的所有差异。要知道这个问题可能是由两个编译器引起的,但不知道如何处理这个问题/为什么其中一个编译器会出现类型错误,而另一个编译器不会。

它可以与调试器一起工作,我认为这是由于这里提到的:

React模拟器/设备上/有或没有Chrome调试时的本地行为不同

编辑:想说的是,我已经做了缓存重置,删除了构建文件夹并重建了

我试用了你的代码,在Android和iOS中都出现了拒绝承诺的情况。它是由.flat()删除引起的,它阻止了承诺拒绝的发生。

看看你在那里映射的数据,似乎没有必要将数据压平,因为它是一个对象数组,里面没有其他数组

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

你可以在这里看到关于.flat()的更多信息,以及它如何仍然是实验性的数组。prototype.flat在nodejs 中未定义

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

最新更新