在获取 rss 提要时变得不确定

getting undefined on fetching rss feed

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

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 检查的原因。但它并没有解决它。有什么想法吗?

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

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

rssFeed?.[r]?.links

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