gpt4 book ai didi

javascript - 如何在 React 中的表单提交上使用带有 fetch API 的 setState ?

转载 作者:行者123 更新时间:2023-12-02 23:52:54 26 4
gpt4 key购买 nike

我是 React 新手,想尝试一下 fetchAPI。我想使用 GoogleBooks API 显示与用户可以在输入字段中输入的查询字符串相匹配的图书列表。

我已成功调用 Google API 并使用了 setState,但无法保持状态。如果我想在获取数据后渲染状态,则状态显示为未定义。

我有一种感觉,React 首先渲染 HTML,然后在调用 API 后设置状态。

如果您能看一下我的组件,我将不胜感激。

谢谢!

import React, {Component} from 'react'

class Search extends Component{
constructor(props){
super(props)
this.state = {
books: []

}
this.books = this.state.book
this.title = ''
this.handleChange = (e) => {
this.title = e.target.value

}
this.handleSubmit = (e) => {
let results = '';
e.preventDefault();
const apiKey = 'AIzaSyBuR7JI6Quo9aOc4_ij9gEqoqHtPl-t82g'
fetch(`https://www.googleapis.com/books/v1/volumes?q=${this.title}&key=${apiKey}`)
.then(response => response.json()).then(jsonData => {
this.setState({
books: jsonData
})
console.log(jsonData)
})

}
}
render(){

return(
<div className="col-md-12">
<form onSubmit={this.handleSubmit} className="form-group">
<label>Enter title</label>
<input onChange={this.handleChange} className="form-control" ref="title" type="text" placeholder="Enter title"></input>
<button type="submit" className="btn btn-primary">Submit</button>
</form>
<div>
<li>this.state.books</li>
</div>
</div>

最佳答案

你有:

<li>this.state.books</li>

这只是渲染一个字符串。

相反,您可以使用 map 来显示从响应中获得的图书数据。

这是一个工作示例:

 <div>
{
this.state.books.items &&
this.state.books.items.map(book => <li>{book.etag}</li>)
}
</div>

关于javascript - 如何在 React 中的表单提交上使用带有 fetch API 的 setState ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55562934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com