javascript - React.js 异步操作 setState 返回 null
问题描述
我使用异步操作从我自己的 API 获取数据,但有时反应不会等待操作完成,因此我的状态对象返回 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();
}
什么是错误?
解决方案
看起来data
您从服务器获取的内容包含一些空值。
尝试在接收数据时将其打印出来,也尝试对其进行过滤:
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) });
};
推荐阅读
- neo4j - 如何使用实体来接收neo4j关系的类型?
- java - 什么 intellji 插件可以帮助改进 java 编码?
- php - 错误:Apache 意外关闭。Xampp
- java - 如何在 Spring Boot 中使用阻塞队列?
- numpy - python numpy/scipy 缩放更改中心
- llvm - 在 llvm 结构之间转换
- java - 具有 Object 类型的成员变量的 Java 类
- python - Python将字符串列表简化为字符串
- flutter - 每次切换屏幕时 Flutter Webview 都会重新加载
- ruby-on-rails - 如何使用 devise_token_auth 打开对我的应用程序的 API 请求?