关于token的获取与Fetch传入headers的步骤无法同步的问题

来源:6-1 本章目标

慕尼黑0536602

2022-03-16

hi 老师,
我被一个问题给堵了。。
就是我需要一个需要上传Authorization :token 的 Get请求。
因为获得用户的token ,需要用await 获取,所以,获取需要一点儿时间。导致同时使用useEffect和fetch上传的时候,Authorization只能获得 “Bearer”,(当不使用useEffect的时候,可以更新,但是程序会拼了老命地获取request …) … 麻烦您帮我看下一下代码,如何才能解决这个问题呢?

const getToken = async()=>{
    try {
      return await AsyncStorage.getItem(KEY); 
    } catch (error) {
        console.log("Error getting the auth token", error);
    }
};
const getMe = async() =>{
  await storage.getToken().then(token=>setUserToken(token));
  fetch('http://192.168.1.124:5000/api/v1/userInfo/getMe',{
      method : "get",
      headers :new Headers({
        'Content-Type':'application/json',
        "Authorization": `Bearer ${userToken}`
       }),
     })
     .then(res=>res.json())
     .then(result=>{
      setMe(result);
      console.log("收到的me信息为:",result);
     })
     .catch(error=>console.log("出错:",error))
}
useEffect(()=>{
    
    getMe();
  },[])

我也尝试使用Promise.all .但是会显示res.json() is undefined…

const getMe = async() =>{
  const p1= await storage.getToken().then(token=>setUserToken(token));
 const p2= fetch('http://192.168.1.124:5000/api/v1/userInfo/getMe',{
      method : "get",
      headers :new Headers({
        'Content-Type':'application/json',
        "Authorization": `Bearer ${userToken}`
       }),
     })
     Promise.all([p1,p2]).then(res=>res.json())
     .then(result=>{
      setMe(result);
      console.log("收到的me信息为:",result);
     })
     .catch(error=>console.log("出错:",error))
}

  useEffect(()=>{
    
    getMe();
  },[])
写回答

1回答

CrazyCodeBoy

2022-03-18

如果实在不行可以改成用class Component
d的写法试试看呢

0
1
慕尼黑0536602
好的,谢谢老师!
2022-03-18
共1条回复

RN入门到进阶,打造高质量上线App

解锁React Native开发应用新姿势,React Native新版本热门技术

3144 学习 · 3241 问题

查看课程