开发者问题收集

无法读取 null 的属性“ ”

2020-01-28
768

我尝试从 API 访问一些数据,但当我这样做时,我得到了“无法读取 null 的属性‘5’”

import React from "react";

function Card(props) {
  console.log(props.data[5].mission_name); //why is it that this doesn't work in my machine?
  console.log(props.data); //this works with my machine

  return (
    <div>
      <h1>test</h1>
    </div>
  );
}

export default Card;

我最初将传递的数据设置为 null,然后在 API 中的数据加载后更新它,所以我认为这可能是问题的一部分,但我不知道如何解决它。我创建了一个代码沙箱以获取更多上下文。作为参考,我正在使用 spacex api。

https://codesandbox.io/embed/gallant-mcnulty-lyied?fontsize=14&hidenavigation=1&theme=dark

提前致谢。

2个回答

正如您所说,您最初将数据值设置为 null。当 Card 最初呈现时,它会尝试在 null 上索引 5 并给出该错误。尝试类似

if (props.data) { // the first render (where data is null) will skip this block
  console.log(props.data[5].mission_name);
}
Jason
2020-01-28

因为有时您的函数在数据为空时被调用。

因此,您必须在访问该数据的元素之前进行检查:

console.log(props.data && props.data[5].mission_name);
Mickael B.
2020-01-28