我试图从useEffect执行一个请求,但由于某种原因,它没有写入useState。如果我输出到控制台,那么我会得到数据,但是我不能从useState得到数据。请告诉我怎么解决。
const [orderAttributes, setOrderAttributes] = useState();
const [orderIncluded, setOrderIncluded] = useState();
useEffect(() => {
const getOrdersData = async () => {
const response = await fetch(
'https://demo.org/api/v2/storefront/account/orders?include=variants.images',
{
headers: {
Authorization: 'Bearer ' + token,
},
},
);
const content = await response.json();
console.log(content); //response data presented
setOrderAttributes(content.data);
setOrderIncluded(content.included);
};
console.log(orderAttributes); //data is't presented
}, []);
字符串
先谢谢你了。
1条答案
按热度按时间ifsvaxew1#
我没有找到
getOrdersData()
方法,所以没有打印任何内容。UPDATE:OK,
setState
是异步的,所以在setState之后,值不能立即更新。这是因为重新渲染屏幕,之后状态被改变了。如果你想捕获状态,你需要使用
useEffect
,dependency = 'data'就像这样:
字符串
每次你的数据你想捕捉,你会得到日志