在获取 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 在实际数据出现之前就已呈现。
我想随机使用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 在实际数据出现之前就已呈现。