Я хочу получить данные, отсортированные по дате публикации sh из RSS в реагировать родной - PullRequest
1 голос
/ 16 марта 2020

Я хочу получить данные, отсортированные по publi sh дата из 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 это массив данных отсортированная дата Но она не получает отсортированные данные, а только одни данные ... Кто мне может помочь? Пожалуйста, дайте мне знать, как это сделать ~

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Во-первых, map - это хороший подход для получения массива данных, но иногда его трудно понять, вместо этого используйте для l oop, чтобы отобразить ваши данные. Вот простой способ сделать это.

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;
            });

    });
0 голосов
/ 16 марта 2020

Мало того, что первая setState асинхронна и ненадежна для немедленной ссылки с помощью this.state.description, причина, по которой dateStack имеет только одну точку данных, заключается в том, что вы перезаписываете ее на каждой итерации на карте. Если вы хотите, чтобы dateStack был просто массивом свойства published каждого элемента в rss.items, вы можете просто использовать map:

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