axios 异步函数始终返回相同的数据

hrirmatl  于 2023-03-18  发布在  iOS
关注(0)|答案(1)|浏览(174)

我有一个获取产品数据的屏幕。安装屏幕时调用一次“getProductById”。

const getProductById = async ({ productId }: { productId: string }) => {

    const response = await productsService.getProductById({ id: productId })
    if (response.isOk && response.data) {
      setProduct(response.data)
      console.log('response product: ', response.data)
    }

  }

  useEffect(() => {
    getProductById({ productId })
  }, [])

此外,当按下按钮时,还有一个“like”函数被调用。首先,我更新like状态,并再次尝试获取产品数据以刷新屏幕:

const onLike = async () => {

    await productsService.setLikeStatus({
      isLiked: true,
      itemId: product.items_id,
    })

    getProductById({ productId })
  }

“getProductById”在屏幕挂载上返回正确的数据,但在按下“喜欢”按钮后,它仍然返回与第一次相同的数据(is_liked = false),即使我可以看到数据库中的产品喜欢状态已更新。
我哪里做错了?
同样奇怪的是,我添加了另一个名为“getProductById”的按钮,只是为了进行测试。当我在“like”请求后点击该按钮时,它仍然会在控制台日志中显示旧数据。但如果我给予它几分钟时间,再次点击它,控制台中会显示一个新数据(is_liked = true)。

kknvjkwl

kknvjkwl1#

提取请求时必须在标头中传递缓存控制

var myHeaders = new Headers();
myHeaders.append('cache-control', 'no-cache');

相关问题