Если это еще не так, вам необходимо выполнить вызовы API в componentDidMount
жизненном цикле вашего компонента.
Кроме того, вы должны поддерживать состояние вызова API (флаг isFetching
в исходном состоянии). ).
...
getJSData = () => {
// set isFetching to true before API call is made
this.setState({ isFetching: true });
fetch('https://api.github.com/search/topics?q=javascript', {
headers: {
'Accept': 'application/vnd.github.mercy-preview+json'
}
})
.then(res => res.json())
.then(json => this.setState({ data: json }));
}
componentDidMount() {
// Call your API
this.getJSData();
}
...
Где ваше начальное состояние:
state = {
isFetching: false,
data: null
}
Затем в методе render
проверьте статус вызова API:
render() {
const { isFetching } = this.state;
if (isFetching) {
return <span> Loading ... </span>
}
// isFetching is false now since API call is complete.
console.log(this.state);
return (
<Router>
<Header jsTrendingName={this.state.data}/>
<Switch>
<Route path="/" exact component={Dashboard} />
<Route path="/home" component={Home} />
</Switch>
</Router>
)
}