javascript - React.js 异步操作 setState 返回 null

标签 javascript reactjs fetch

我使用异步操作从我自己的 API 获取数据,但有时 React 不会等待操作完成,因此我的状态对象返回 null 并导致 null 错误。

构造函数:

 constructor(props) {
    super(props);
    this.openCase = this.openCase.bind(this);
    this.state = {
      reward: {},
      skins: [],
      caseImg: ""
    };
    this.fillCase = this.fillCase.bind(this);
  }

我的获取代码:

 fillCase = async () => {
    const link = encodeURI("https://localhost:44390/api/getskins");
    const response = await fetch(link);
    const data = await response.json();
    this.setState({ skins: data });
  };

我在组件安装之前调用 fillCase:

componentWillMount(){
this.fillCase();
}

什么是错误?

enter image description here

最佳答案

您从服务器获取的数据似乎包含一些空值。

尝试在收到数据时将其打印出来,并尝试对其进行过滤:

fillCase = async () => {
    const link = encodeURI("https://localhost:44390/api/getskins");
    const response = await fetch(link);
    const data = await response.json();
    console.log(data);
    this.setState({ skins: data.filter(d => d) });
};

关于javascript - React.js 异步操作 setState 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60923883/

相关文章:

JavaScript __proto__ 会影响Object中原来的函数吗?

javascript - 通过函数查询firebase实时数据库

javascript - ContentSecurityPolicy 防止 Electron 中的获取请求

reactjs - 检索参数并将参数设置为 useEffect Hook 中的获取请求中的参数

javascript - JS将两个数字相加并显示到小数点后两位

javascript - 将脚本放在 <body> 的底部是否与 onDomReady 相同?

java - 如何更正我的代码以消除 CORS 获取问题?

node.js - 如何在 React 15.6.0 上正确使用 PropTypes?

javascript - 尝试使用 react-leaflet-choropleth : Cannot read property 'map' of undefined 映射等值线时出错

php - 根据周、日选择 optgroup 匹配