[英]React state is not being updated by my call to the API
我是 React 的新手,但看着类似的问题和答案,我认为这应该有效。 但它只是返回空值。 如果我将默认状态设置为空数组,它只会返回空数组。 我也没有收到任何错误,并且正在调用 fetch。
import React, { Component } from "react";
import "./App.css";
import Header from "./Header";
import BreweriesContainer from "./BreweriesContainer";
class App extends Component {
constructor(props) {
super(props);
this.state = {
names: null
};
}
componentDidMount() {
fetch("https:api.openbrewerydb.org/breweries?by_state=Colorado")
.then(response => response.json())
.then(jsonData => {
this.setState({ names: jsonData.name });
console.log(this.state.names);
});
}
render() {
return (
<div className="App">
<Header />
<p>{this.state.names}</p>
<BreweriesContainer />
</div>
);
}
}
export default App;
this.setState({ names: jsonData.name },() =>{
console.log(this.state.names);
});
在 setstate 回调中的控制台,您将在渲染函数中获得更新的状态或控制台
您的jsonData.name
将不起作用,因为该请求返回一个具有多个值的数组,其键名为name
。 所以jsonData.name
将是未定义的。 试试jsonData[0].name
。
如果您希望所有名称都使用这样的 map 函数:
this.setState({ names: e.map( (object) => object.name ) });
另外,您应该像@Kishan 所说的那样执行控制台日志:
this.setState({ names: jsonData.name },() =>{
console.log(this.state.names);
});
在 setState 调用后立即 console.log 不会按预期工作,因为 setState 异步更新状态,并且 console.log 语句不会等待 setState 在打印出前一个/默认值之前完成
这不只是一个错字吗?
this.setState({names: jsonData.name });
也许应该是
this.setState({names: jsonData.names });
Diogo 有你的答案, jsonData
是一个数组,所以你需要使用jsonData[0]
访问它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.