Я только начал учиться реагировать, и теперь я застрял и надеюсь на вашу помощь.
В настоящее время я пытаюсь ограничить свои данные из API новостей и добавить кнопку загрузки еще для загрузки больше данных.
Я нашел хороший пример здесь, но мне не удалось адаптировать его к моему коду.
Пример: codepen.io
Надеюсь, вы мне поможете.
Мой код:
class App extends React.Component {
state = {
articles: [],
isLoading: true,
errors: null,
visible: 2
};
loadMore() {
this.setState(prev => {
return { visible: prev.visible + 4 };
});
}
getArticles() {
axios
.get(
"https://newsapi.org/v2/everything?q=ai&pageSize=100&sortBy=popularity&apiKey=API_KEY"
)
.then(response =>
response.data.articles.map(article => ({
date: `${article.publishedAt}`,
title: `${article.title}`,
url: `${article.url}`
}))
)
.then(articles => {
this.setState({
articles,
isLoading: false
});
})
.catch(error => this.setState({ error, isLoading: false }));
}
componentDidMount() {
this.getArticles();
}
render() {
const { isLoading, articles, visible } = this.state;
return (
<React.Fragment>
<H1>#AI</H1>
<div>
{!isLoading ? (
articles.map(article => {
const { date, title, url } = article;
return (
<Div key={url}>
<Div inner>
<P>{moment.utc(date).format("YYYY-MM-DD")}</P>
<A href={url}>{title}</A>
</Div>
</Div>
);
})
) : (
<Div loader />
)}
</div>
{this.state.visible < this.state.articles.length && (
<Button onClick={this.loadMore}>Load more</Button>
)}
</React.Fragment>
);
}
}
export default App;