【问题标题】:getting undefined on fetching rss feed获取 RSS 提要时未定义
【发布时间】:2021-12-18 04:32:52
【问题描述】:

我想随机使用url 和包react-native-url-preview 显示来自google rss news feed 的一些新闻。我正在对它进行 fetch 调用:

const [rssFeed, setRssFeed] = useState([]);
const [shouldFetch, setShouldFetch] = useState(true);
var feed = [];

if (shouldFetch) {
 console.log("shouldFetch");
 getFeed();
 setShouldFetch(false);
}

function getFeed() {
 console.log("getFeed: " + shouldFetch);
 fetch(
   "https://news.google.com/rss/search?q=cars&hl=en-GB&gl=GB&ceid=GB%3Aen"
 )
  .then((response) => response.text())
  .then((responseData) => rssParser.parse(responseData))
  .then((rss) => {
    console.log(typeof rss.items);
    let feedItems = rss.items;
    feed = feedItems;
    // @ts-ignore
    setRssFeed(rss.items);
  });
}

if (!shouldFetch) {
 console.log(rssFeed);
 var randomArr = [];
 while (randomArr.length < 4) {
  var r = Math.floor(Math.random() * 100);
  if (randomArr.indexOf(r) === -1) randomArr.push(r);
  // @ts-ignore
  console.log(r + " " + rssFeed[r].links[0].url);
}

}

这只有时有效!

50% 的时候我得到错误:undefined is not an object (evaluating 'rssFeed[r].links'

我认为这是因为 react-native 中的重新加载,这就是我放置 if 支票的原因。但它并没有解决它。有什么想法吗?

【问题讨论】:

    标签: react-native fetch rss


    【解决方案1】:

    您可以使用可选链接,例如rss?.items

    这意味着如果rss 存在,请检查rss.item

    rssFeed?.[r]?.links
    

    有时您会收到未定义错误,因为 UI 在实际数据出现之前就已呈现。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    • 它有效,谢谢伙计!不过需要注意的一点是:我第一次加载应用程序时,没有加载新闻。我正在努力,但也许你有什么想法?
    • 好的,知道了。解决方案:我在渲染之前使用了这个检查rssFeed[0]?.links[0]?.url ? ,它可以工作。谢谢!
    • 请不要用“u”表示“你”。我们不是在发短信,而是在写一篇解决语法和拼写很重要的问题的文章。另外,请格式化您的条目以便于阅读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    相关资源
    最近更新 更多