![](/img/trans.png)
[英]Using params instead of bearer token in API call in React Native
[英]React native using axios cant get bearer token
我使用來自后端服務器的 axios 收到了 api 請求。 我想將不記名令牌保存到設備存儲或本地存儲。 但是當我為不記名令牌執行console.log
時,它似乎不起作用,因為我得到的是類似於 promise 的東西。
這是我的方法
import {AsyncStorage, Alert} from 'react-native';
export default function login(email,password,setLoading){
console.log('Loading...')
setLoading(true)
axios.post('http://52.74.70.6/api/auth/login',{
email: email,
password: password
},{
headers:{
Accept: 'application/json',
'Content-Type': 'application/json',
}
})
.then((res)=>{
setLoading(false)
AsyncStorage.setItem('bearer_token', res.data.bearer_token);
console.log(AsyncStorage.getItem('bearer_token'))
console.log('Loading Finished')
}).catch((err)=>{
setLoading(false)
console.log(err)
AlertErr()
})
}
我得到的是
Loading...
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
Loading Finished
您可以將async/await
與try/catch
一起使用,使其更具可讀性。 此外,您需要await
對AsyncStorage
的請求,因為它返回 promise。
import { AsyncStorage, Alert } from "react-native";
export default async function login(email, password, setLoading) {
console.log("Loading...");
setLoading(true);
const url = "http://52.74.70.6/api/auth/login";
const data = {
email: email,
password: password,
};
const headers = {
Accept: "application/json",
"Content-Type": "application/json",
};
try {
const response = await axios.post(url, data, { headers: headers });
setLoading(false);
await AsyncStorage.setItem("bearer_token", res.data.bearer_token);
console.log(await AsyncStorage.getItem("bearer_token"));
console.log("Loading Finished");
} catch (err) {
setLoading(false);
console.log(err);
AlertErr();
}
}
由於它是“異步”,您是否嘗試在它之前添加await
await AsyncStorage.setItem("bearer_token", res.data.bearer_token);
console.log(await AsyncStorage.getItem('bearer_token'))
或者只返回 promise 鏈中的 promise
then((res)=>{
setLoading(false)
await AsyncStorage.setItem('bearer_token', res.data.bearer_token);
return AsyncStorage.getItem('bearer_token')
})
.then(token => console.log('token', token)
顧名思義,AsyncStorage 是異步的。 設置項目和從 AsyncStorage 讀取項目都是異步的,因此您無法立即讀取插入的結果。 根據文檔,為了記錄它,您可以
AsyncStorage.setItem('bearer_token', res.data.bearer_token).then(() => {
AsyncStorage.getItem('bearer_token').then(console.log)
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.