【问题标题】:I want to get the data sorted by publish date from RSS in react native我想在本机反应中从 RSS 中获取按发布日期排序的数据
【发布时间】:2020-03-16 01:21:50
【问题描述】:

我想从 React Native 的 RSS 中获取按发布日期排序的数据

我使用了这个代码:

fetch('url here')
  .then((response) => response.text())
  .then((responseData) => rssParser.parse(responseData))
  .then((rss) => {
    this.setState({
      description : rss.items,
      isLoading : true
    });
    rss.items.map((value, index) => {
      this.setState({
        dateStack : this.state.description[index].published
      });
    });
  });

在这里,dateStack 是数据排序日期的数组 但它没有得到排序的数据,只得到一个数据...... 谁能帮我? 请告诉我该怎么做~

【问题讨论】:

  • setState 是异步的,因此您不能在 map 方法中依赖 this.state

标签: javascript reactjs react-native rss fetch


【解决方案1】:

不仅第一个setState 是异步的,并且不可靠地立即与this.state.description 进行引用,dateStack 只有一个数据点的原因是因为您在地图中的每次迭代时都会覆盖它。如果您希望dateStack 只是rss.items 中每个元素的published 属性的数组,则可以使用map

.then((rss) => {
    this.setState({
        description: rss.items,
        isLoading: true,
        dateStack: rss.items.map(item => item.published)
    });
})

【讨论】:

  • 但是没有结果。
  • 您确定每个rss.items 元素甚至都有published 属性吗?我们看不到您正在处理的数据结构,只能根据您提供的内容做出假设
【解决方案2】:

首先,map 是获取数据数组的好方法,但有时很难理解,不如使用它,使用 for 循环 来映射数据。这是执行此操作的简单方法。

fetch('url here')
    .then((response) => response.text())
    .then((responseData) => rssParser.parse(responseData))
    .then((rss) => {

        var l_Data = [];
        for (var index = 0; index < rss.length; index++)
        {
            l_Data[index] = rss[index];
        }
        this.setState({
            description: l_Data,
            isLoading: true
        });
            this.setState({
                dateStack: l_Data;
            });

    });

【讨论】:

    猜你喜欢
    • 2018-05-18
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 2018-09-14
    相关资源
    最近更新 更多