首页 > 解决方案 > 如何在 React Native 中解析 RSS 提要?

问题描述

Youtube 上没有任何关于如何在 RN 中解析 RSS 提要的像样视频。但是,当我在 Google 上搜索解决方案时,我发现了这个react-native-rss-parserhttps://www.npmjs.com/package/react-native-rss-parser)。

它有这个用法示例:

import * as rssParser from 'react-native-rss-parser';

return fetch('http://www.nasa.gov/rss/dyn/breaking_news.rss')
  .then((response) => response.text())
  .then((responseData) => rssParser.parse(responseData))
  .then((rss) => {
    console.log(rss.title);
    console.log(rss.items.length);
  });

如何将提要解析为数组?例如:

constants/Stories.js

export const HomeScreenStories = ([
  {
    pic: rss.items[0].imageUrl ,
    title: rss.items[0].title,
    caption: rss.items[0].description,
  }
])

更新

constants/Stories.js

import shuffleArray from '../utils/shuffleArray'
import * as rssParser from 'react-native-rss-parser'

export const HomeScreenStories = ([
    pic: rss.items[0].imageUrl,
    title: rss.items[0].title ,
    caption: rss.items[0].description,

    /* HOW DO I PARSE THE RSS FEED INTO HERE??? */
])

标签: javascriptreact-nativerssrss-reader

解决方案


我在我的实现中使用了 Axios,但是任何请求库都应该可以工作。或者只是取。

import * as rssParser from 'react-native-rss-parser';
async componentDidMount() {
  const res = await axios.get(url, {
    responseType: 'text'
  });
  try {
    const parsed = await rssParser.parse(res.data);
    this.setState({ rssFeeds: parsed.items });
  } catch(err) {
    .....
  }
}

编辑:更新了解决方案的建议


return fetch('http://www.nasa.gov/rss/dyn/breaking_news.rss')
  .then((response) => response.text())
  .then(async (responseData) => {
    const rss = await rssParser.parse(responseData);
    console.log(rss.title);
    console.log(rss.items.length);
  });

推荐阅读