我有一个API,每当用户正确输入大学名称时,API就会根据ID动态获取大学信息。我使用get axios获取数据,下面是UI图像:
这是我目前为止写的代码:
import React, { useState } from "react";
import { Container, Form, Button} from "react-bootstrap";
// Form, Button, Col, Row, Spinner
import axios from "axios"
import './styles.css';
function App() {
const [institutionId, setInstitutionId] = useState("")
const submitHandler = (e) => {
e.preventDefault();
let userData = {
institutionId: institutionId
};
const APIKey = "API key is hidden";
axios
.get(`https://api.data.gov/ed/collegescorecard/v1/schools.json?id=${institutionId}&fields=school.name,2020.student.size&api_key=${APIKey}`, JSON.stringify(userData), {
headers: {
"Content-Type": "application/json",
},
})
.then((response) => {
if (response.status === 200) {
console.log("successfully posted to the server!!");
} else {
console.log("it wasn't successful");
}
})
.catch((err) => {
console.error(`Error: ${err}`);
});
console.log(JSON.stringify(userData));
// setInstitutionId("");
};
return (
<Container>
<div className="App">
<h1>University Finder App</h1>
</div>
<Form onSubmit={submitHandler}>
<Form.Group className="mb-3" controlId="formBasicEmail">
<Form.Label>Type University Name</Form.Label>
<Form.Control type="text" value={institutionId}
onChange={(e) => setInstitutionId(e.target.value)} />
</Form.Group>
<Button variant="primary" type="submit">
Submit
</Button>
</Form>
</Container>
);
}
export default App;
提前感谢您的帮助,让我知道如果我需要澄清我的问题更多。
2条答案
按热度按时间aamkag611#
由于用户不知道他想要搜索的大学的ID,我建议从该API获取所有大学并将其存储在列表中,然后使用
select
组件autocomplete
填充大学列表,然后用户将开始键入大学的名称,他将获得从中选择的建议。xoshrz7s2#
我不太确定我是否理解您的问题,是否需要做一些澄清。您当前的代码似乎会在单击提交按钮时从API获取数据,因为该查询是在
submitHandler
函数中执行的。您是否尝试在用户在表单中键入有效的大学ID后立即执行查询(IidoEe.没有点击提交按钮)?或者是将大学ID传递到请求本身的问题?一旦你回答了这些问题,我也许可以帮上忙。编辑:谢谢你的澄清!我建议首先获取Map到大学名称的ID列表,并将其存储在某个州(如果您只需要在此组件中访问此列表,则使用
useState
的本地州即可)。这可以用来填充下拉列表,当用户从下拉列表中选择一个选项时,原始API将通过下拉列表的
onSelect
处理程序使用选项的id属性调用。希望这能有所帮助。