我有一个获取产品数据的屏幕。安装屏幕时调用一次“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)。
1条答案
按热度按时间kknvjkwl1#
提取请求时必须在标头中传递缓存控制