javascript - React - setState 不更新数组
问题描述
这是我的代码:
class App extends Component {
state = {
query: '',
results: []
}
handleSearch(e) {
var query = e.target.elements.query.value;
axios.get("http://www.omdbapi.com/?s=" + query + "&page=1&apikey=xxxx")
.then(function (response) {
console.log(response.data);
this.setState({
results: response.data.Search
});
}.bind(this))
.catch(function (error) {
});
e.preventDefault();
}
我正在尝试从omdb获取数据并将其显示在页面上。
问题是 setState 没有更新数组results
?
任何想法 ?谢谢
解决方案
您绑定 axios 请求正确完成时调用的函数,但您还必须绑定handleSearch
方法本身。您可以在构造函数中执行此操作,或者使用类属性箭头函数:
class App extends Component {
state = {
query: '',
results: []
}
handleSearch = (e) => {
// ...
}
}
推荐阅读
- reactjs - 如何使用 React-Redux 进行搜索?
- types - 类型注释是提高还是阻碍抽象类型的性能?
- html - 如何使用 CSS 设置静态链接的下划线效果?
- javascript - 有没有办法为 npm 中的 monorepo 项目安装多个 package.json 文件的依赖项
- java - onCreate() 中的无限循环
- python - 如何获得下一个 json 密钥?
- c# - 在 c# 中获取 HPC-PACK 命令的 powershell 结果
- r - 计算逻辑回归的预测比率
- angular - ChildComponent 和他的 Parent 之间使用 ng-content 进行交互
- android - JitPack 构建失败“错误:未找到构建工件”