我想使用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
的可选链接。
这意味着如果存在CCD_ 8,则检查CCD_。
rssFeed?.[r]?.links
有时会出现"未定义错误",因为UI在实际数据出现之前就已呈现。