javascript 为什么我一次又一次地得到相同的数据?如何处理数据属性?

6ju8rftf  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(93)

我正在尝试离线支持我的应用程序,所以我想做的逻辑是首先检查是否有cachedfeeds数据,如果有,那么它将setFeeds到该数据,该数据将从缓存中显示,但它也会获取API并获取新数据,在从API获取新数据后,它会从存储中删除旧的cachedfeeds数据并替换为新数据
如果用户第一次打开应用程序并且没有feedcached,则它通常会将API获取的数据提供给用户,
目前,我的代码没有替换新的API数据,以feedcached数据我得到相同的数据一次又一次地从缓存时,我记录storedData我如何解决这个问题?

const [feeds, setFeeds] = useState([]);
  const [page, setPage] = useState(1);
  const [cached, setCached] = useState(false);

  const fetchallfeeds = async () => {
    try {
      if (!cached) {
        const storedData = storage.getString('cachedfeeds')
        if (storedData) {
          console.log(storedData)
          console.log('Fetching data from cache...');
          setFeeds(JSON.parse(storedData));
          setCached(true);
        }
      }
      const response = await fetch(`http://localhost:3000/feeds/${page}`);
      const data = await response.json()
      console.log('Fetching data from API...');
      if (cached) {
        await storage.delete('cachedfeeds')
      }

      await storage.set('cachedfeeds', JSON.stringify(data));
      setFeeds(prevPosts => [...prevPosts, ...data])
    } catch (error) {
      console.log(error)
    }
  }

  useEffect(() => {
    fetchallfeeds()
  }, [page, cached])
ct2axkht

ct2axkht1#

只要缓存的值发生变化,就会调用fetchallfeeds,这就是我无限循环的原因

相关问题