javascript - 出于某种原因,无法使用 Reactjs 中的 axios 从 api 获取数据以在屏幕上呈现
问题描述
所以我已经尝试了几个小时让我的 api 数据在 reactjs 的屏幕上呈现。我尝试调整地图方法并使用代码,但它一直给我错误
它不会呈现我在控制台中看到的信息
import React, { Component } from 'react';
import './App.css';
import axios from "axios"
const user_key="cf7a5f91a3331dc1409df6bb967b9689103967f70b5b0f80fef391a4df5a1039"
class App extends Component {
state = {
searching: []
}
getInfo = (e) => {
e.preventDefault();
const info = e.target.elements.search.value;
axios.get(`https://api.mattermark.com/search?key=${user_key}&term=${info}`)
.then((res) => {
console.log(res.data);
this.setState({ searching: res.data})
})
}
handleChange = (e) => {
const entered = e.target.value;
console.log(entered);
}
render() {
console.log(this.state.searching)
return (
<div className="App">
<header className="App-header">
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
</header>
<form onSubmit={this.getInfo}>
<input name="search" onChange={this.handleChange}/>
<button onClick={this.handleSearch}>Search</button>
</form>
{this.state.searching.map((company)=> {
return(
<div>
{company}
</div>
)
})}
{this.state.searching ? <p>Data: {this.state.searching}</p> : "Please type something! "}
</div>
);
}
}
export default App;
我的实际结果显示错误预期结果是从键“object_name”映射各种公司名称
解决方案
你应该这样做:
{this.state.searching.map((company)=> {
return(
<div>
Type:{company.object_type}
Name:{company.object_name}
</div>
)
})}
您无法渲染对象。
UPD:您可以使用另一个组件来呈现有关公司的信息并在映射中传递数据,我会做这样的事情。
const CompanyInfo = ({data}) => (
<div>
<p>{data.object_type}</p>
<p>{data.object_type}</p>
</div>
)
接着:
{this.state.searching.map((company)=> {
return(
<CompanyInfo data={company} />
)
})}
推荐阅读
- solr - 在 Solr 中使用嵌套字段更新现有文档
- html - 字符串中的 HTML 变量
- sql - SQL 中的期初余额和期末余额(按不同列分组)
- windows - 在操作系统范围内用括号封装文本
- python - 创建一个网页,它要求一些输入并将其写入文件
- javascript - 为什么这个使用 react-hook-form 的表单不会重置回 defaultValues?
- r - lubridate:floor_date 设置参考开始时间戳
- java - JNI调用Android对话框,等待用户选择
- google-maps-api-3 - 华为设备没有在我的应用程序中加载谷歌地图
- ruby - 根据创建的方法更改地点索引(RUBY 挑战)