.map(),在React Native中Undefined不是一个函数

3

我将调用一个API并使用它来设置状态。

我的状态:

  state = {
   candlesticks: []
};

我的API调用和Promise函数:

componentDidMount() {
    axios
      .get(
    "apiurl"
      )
      .then(data => {
        let mappedData = data.map((record) => {record.date *= 1000}); //getting the error here with the map()function
        this.setState({
          candlesticks: mappedData
        });
      });
  }

我尝试了代码的不同变化,但仍然出现错误。 我正在使用Expo框架。

未定义的函数 (评估'数据.地图(函数(记录){记录.日期*= 1000})')


1
可能你需要从响应中解析出data。这可能是类似于data.body.map或者data.content.map的东西。打印data以查看它真正包含的内容! - Sulthan
我之前在网页上使用过相同的数据,所以我知道。不过那时我用的是jQuery。 - furball514
1个回答

2
Axios返回一个响应对象。在响应中,您有一个带有数据的data属性。
因此,您需要做的是:
componentDidMount() {
    axios.get("apiurl")
    .then(response => {
        let mappedData = response.data.map((record) => {record.date *= 1000}); //getting the error here with the map()function
        this.setState({
            candlesticks: mappedData
        });
    });
}

编辑

看起来axios应该没有问题,但为了排除这个可能性,请尝试使用内置的fetch模块,并检查数据是否仍为空。

componentDidMount() {
    fetch("apiurl")
    .then(response => {
        return response.json();
     })
    .then(data => {
        let mappedData = data.map((record) => {record.date *= 1000});
        this.setState({
            candlesticks: mappedData
        });
    });
}

如果它为null,则问题在于你的服务器。

我意识到响应对象,这是一个愚蠢的错误。谢谢。 - furball514
响应对象返回的数据全部为 null - furball514
我该如何修复这个问题? - furball514
这个相同的映射方法和数据在我之前在Web上使用jQuery时有效。 - furball514
但似乎它没有完全映射。 - furball514
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接