axios rss2json API:源不是真实的更新的

o8x7eapl  于 2023-03-29  发布在  iOS
关注(0)|答案(2)|浏览(113)

我创建了一个博客组件到我的投资组合,以显示我的中等职位,我想测试它是否会呈现新的文章,所以我发布了一个新的文章来测试它,但它并没有改变,即使在刷新,数组的长度保持不变,当我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]);
bfhwhh0e

bfhwhh0e1#

看起来你应该看看rss2jsonpricing
由于您是免费计划(您的URL中没有API密钥),因此您的提要将每小时更新一次。

6l7fqoea

6l7fqoea2#

这段代码的问题在于username变量是在useEffect钩子内部定义的,并被用作钩子的依赖项,这可能会导致无限循环,因为username变量在每次渲染时都在改变,这会触发useEffect钩子一次又一次地运行
要解决这个问题,您应该将username变量移到useEffect钩子之外,并将其包含在组件的状态或属性中
从“React”导入React,{使用状态,使用效果};从“axios”导入axios;

const MyComponent = ({ username }) => {
  const [posts, setPosts] = useState([]);

  useEffect(() => {
    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]);

  return (
    <div>
      {/* Render the posts here */}
    </div>
  );
};

export default MyComponent;

相关问题