首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建Load More按钮,以增加从API获取的可见文章的数量

创建Load More按钮,以增加从API获取的可见文章的数量
EN

Stack Overflow用户
提问于 2020-03-08 17:48:28
回答 1查看 406关注 0票数 0

我刚刚开始学习反应,现在我被卡住了,希望能得到你的帮助。

我目前正在尝试限制来自新闻api的数据,并添加一个load - more按钮来加载更多数据。

我在这里找到了一个很好的例子,但是我不能设法使它适应我的代码。

示例:codepen.io

我希望你能帮助我。

我的代码:

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

发布于 2020-03-08 18:40:54

缺少的是,在映射之前没有将可见计数应用于项目

代码语言:javascript
复制
{articles.slice(0, visible).map((article, index) => {
     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>
     );
})}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60586262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档