获取 RSS 提要时未定义

Posted

技术标签:

【中文标题】获取 RSS 提要时未定义【英文标题】:getting undefined on fetching rss feed 【发布时间】: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 支票的原因。但它并没有解决它。有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

rssFeed?.[r]?.links

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

【讨论】:

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

以上是关于获取 RSS 提要时未定义的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript:在AWS Lambda Node应用程序中将RSS转换为JSON

解析 RSS 提要最近一直抛出文档类型定义 (DTD) 错误

在我的网站中自定义 RSS 提要

Liferay 7:获取组织自定义字段时未初始化 PermissionChecker

尝试使用 useContext() 获取对象时未定义对象

从 mongoose 数据库获取值时未定义