设置默认标题的位置,因此即使在页面加载之前也要首先设置它们。

时间:2018-10-04 09:29:59

标签: react-native async-await

我正在制作React Native应用程序。为了获得授权,我将使用axios设置默认标头。


设置标题的代码

export default function setAuthToken(token){
if(token){
    const head = 'Bearer '+token
    axios.defaults.headers.common['autherization'] = head
}
else{
    await delete axios.defaults.headers.common['autherization']
 }
}


用于检索令牌的代码

_retrieveData = async (key) => {

    console.log('Getting you token')
    console.log(key)

    try {
        const value = await AsyncStorage.getItem(key);

        if (value !== null) {
            console.log("got token")
//      console.log(value);
            await setHeader(value)
            return value
    }else{
            console.log("no token")
            return null
        }
   } catch (error) {
         console.log('errerr token')
         console.log(error)
         return null
     }
}


在这里,我尝试运行这些功能以在应用加载之前设置标头 App.js

_retrieveData('token')  

AppRegistry.registerComponent(appName,() => App);


但是问题出在我的应用程序的第一页上,我向componentDidMount中的服务器发出了axios请求,并且没有设置标头。我在axios调用之前记录了标头,发现在axios调用之前,正确设置了请求发送标头之后,标头未正确设置(令牌是对象而不是字符串)。
为什么不等待头设置我使用async / await

0 个答案:

没有答案