这种东西很好地解释了 文档 。
每次执行API请求时都需要使用state,因为它是一种副作用。我建议您阅读文档并理解它,但要使其在您的组件中工作,请在组件的开头添加:
class BlaBla extends Component { state = { response: undefined }; /* Rest of component code */ }
并将您的获取请求更改为如下所示:
fetch('/', { method: 'POST' }).then(response => this.setState({response}));
通过添加状态,您也会遇到绑定问题,因此将方法声明更改为箭头函数,由此:
handleSubmit(event) { /* code */ }
对此:
handleSubmit = (event) => { /* code */ }
要在答案段落中显示结果,请执行以下操作:
<p> Answer: {this.state.response} </p>
基本上,您需要将获取调用的结果保存到组件状态。使用setState,它将自动触发组件的重新呈现并显示新的答案。
试试这个:
handleSubmit(event) { event.preventDefault(); // assuming the fetch works ok... fetch('/', { method: 'POST' }).then(response => response.json().then(data => this.setState({answer:response}) ) ) }
然后在render()里面:
<div style={{display: 'flex', justifyContent:'center', alignItems:'center'}}> <p>Answer:{this.state.answer}</p> <p>Question count: {this.state.count}</p> </div>
编辑:
您可能需要将响应解析为json,例如
fetch('/', { method: 'POST' }).then(response => this.setState({answer:JSON.parse(response)}) )