如何从 URL 数组中获取内容是本机反应



我正在尝试从多个提要中获取数据并将其存储在数组中。

网址:

var URLS = [
  "https://www.wired.com/feed/rss",
  "http://feeds.bbci.co.uk/news/rss.xml",
  "http://www.nasa.gov/rss/dyn/breaking_news.rss"
];

我要填充的数组:

constructor() {
    super()
    this.state = {
      data: []
    }
  }

从源中提取标题和描述的功能

extractData(text) {
    var doc = new DOMParser().parseFromString(text, 'text/xml');
    var items_array = [];
    var items = doc.getElementsByTagName('item');
    for (var i = 0; i < items.length; i++) {
      items_array.push({
        title: items[i].getElementsByTagName('title')[0].lastChild.data,
        description: items[i].getElementsByTagName('description')[0].lastChild.data,                  
      })
    }
    return items_array;
  }

用于获取数据的代码:

fetchData() {
    return Promise.all(
      URLS.map(url => fetch(url)
        .then(response => response.text())
        .then(responseData => {
          this.setState(
            (prevState, props) => ({
              data: [...prevState.data, this.extractData(responseData)]
            })
          );
        })
        .catch(err => console.error(err))
      )
    ).then(() => { /* do some thing */ }, err => { console.error(err) }) 
  }

问题是数据没有显示在列表中,但是如果我像下面的代码一样添加测试数据,它会显示得很好:data: [...prevState.data, {title: "t1", description: "d1"}, {title: "t2", description: "d2"}]

逻辑似乎工作得很好,但是您没有正确使用扩展运算符:

this.setState(
  (prevState, props) => ({
    data: [...prevState.data, ...this.extractData(responseData)]
  })
)

const data = [1,2,3,4]
const extraElements = [5,6,7,8]
const result = [...data, ...extraElements]
console.log(result)

相关内容

  • 没有找到相关文章

最新更新