ReactNative未记录在useEffect的setState中

yshpjwxd  于 2023-08-07  发布在  React
关注(0)|答案(1)|浏览(121)

我试图从useEffect执行一个请求,但由于某种原因,它没有写入useState。如果我输出到控制台,那么我会得到数据,但是我不能从useState得到数据。请告诉我怎么解决。

  1. const [orderAttributes, setOrderAttributes] = useState();
  2. const [orderIncluded, setOrderIncluded] = useState();
  3. useEffect(() => {
  4. const getOrdersData = async () => {
  5. const response = await fetch(
  6. 'https://demo.org/api/v2/storefront/account/orders?include=variants.images',
  7. {
  8. headers: {
  9. Authorization: 'Bearer ' + token,
  10. },
  11. },
  12. );
  13. const content = await response.json();
  14. console.log(content); //response data presented
  15. setOrderAttributes(content.data);
  16. setOrderIncluded(content.included);
  17. };
  18. console.log(orderAttributes); //data is't presented
  19. }, []);

字符串
先谢谢你了。

ifsvaxew

ifsvaxew1#

我没有找到getOrdersData()方法,所以没有打印任何内容。
UPDATE:OK,setState是异步的,所以在setState之后,值不能立即更新。这是因为重新渲染屏幕,之后状态被改变了。
如果你想捕获状态,你需要使用useEffect,dependency = 'data'
就像这样:

  1. useEffect(() => {
  2. console.log('yourdatayouwanttocatch', yourdatayouwanttocatch)
  3. }, [yourdatayouwanttocatch])

字符串
每次你的数据你想捕捉,你会得到日志

相关问题