【发布时间】:2021-03-24 16:57:41
【问题描述】:
我正在使用 Google 图书 API 来获取数据。当我单击按钮以获取数据时,响应是一个空数组。我不知道我在使用异步函数时做错了什么。
export default function SearchInput() {
const [inputSearch, setInput] = useState("")
const [bookSearch, setBookSearch] = useState([])
//async function to retrieve data from an API
const fetchBooks = async() => {
const res = await fetch(
`https://www.googleapis.com/books/v1/volumes?q=flowers+inauthor:keyes&key=${apikey}`
);
const data = await res.json();
setBookSearch(bookSearch);
console.log(bookSearch); //shows an empty array
}
//search function
const handleSearch = (e) => {
e.preventDefault();
fetchBooks();
}
return (
<div>
<h2>search book</h2>
<p>libro: {inputSearch}</p>
<form onSubmit={handleSearch}> // this trigger the search function
<input placeholder="Title, Author"
type="text"
value={inputSearch}
onChange={e=>{setInput(e.target.value)}}/>
<button type="submit">Search</button>
</form>
</div>
);
}
【问题讨论】:
-
因为你告诉它:
const [bookSearch, setBookSearch] =useState([])所以bookSearch开始是一个空数组,你永远不会改变值。
标签: javascript reactjs async-await react-hooks use-state