我创建了一个博客组件到我的投资组合,以显示我的中等职位,我想测试它是否会呈现新的文章,所以我发布了一个新的文章来测试它,但它并没有改变,即使在刷新,数组的长度保持不变,当我console.log(posts).我添加了时间戳作为参数的url在第二个代码,但它也没有帮助
useEffect(() => {
const username = "@khaledb.yahya";
const url = `https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/${username}`;
axios
.get(url)
.then((response) => {
const posts = response.data.items;
setPosts(posts);
console.log(posts);
})
.catch((error) => {
console.error(error);
});
}, [username]);
useEffect(() => {
const username = "@khaledb.yahya";
const timestamp = Date.now();
const url = `https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/${username}&t=${timestamp}`;
axios
.get(url)
.then((response) => {
const posts = response.data.items;
setPosts(posts);
console.log(posts);
})
.catch((error) => {
console.error(error);
});
}, [username]);
2条答案
按热度按时间bfhwhh0e1#
看起来你应该看看
rss2json
的pricing。由于您是免费计划(您的URL中没有API密钥),因此您的提要将每小时更新一次。
6l7fqoea2#
这段代码的问题在于username变量是在useEffect钩子内部定义的,并被用作钩子的依赖项,这可能会导致无限循环,因为username变量在每次渲染时都在改变,这会触发useEffect钩子一次又一次地运行
要解决这个问题,您应该将username变量移到useEffect钩子之外,并将其包含在组件的状态或属性中
从“React”导入React,{使用状态,使用效果};从“axios”导入axios;