我在react-native中使用componentWillMount从API获取数据。但是,当我尝试获取登录时存储的令牌时。它行不通。我不知道是什么问题/
componentWillMount(){
let token = this.getData
fetch('http://192.168.0.125:8887/api/auth/activities/index',{
method: 'POST',
headers:{
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer '. token,
},
})
.then((response) => response.json())
.then((res) => {
//console.log(res)
})
.catch((e) => console.log('Error: ', e))
}
getData = async () => {
let token =''
try{
token = AsyncStorage.getItem('id_token')
console.log(token)
}catch (error) {
console.log('AsyncStorage error: ' + error.message);
}
return token
}
答案 0 :(得分:2)
好吧,AsyncStorage.getItem()是一个承诺,因此您需要在console.log之前使用await获取令牌。
const token = await AsyncStorage.getItem('id_token')
答案 1 :(得分:1)
不要在ComponentWillMount内部进行api调用。 在ComponentDidMount内部执行此操作。 对于您的问题- 尝试等待AsyncStorage.getItem('id_token'),因为AsyncStorage是一个承诺。
或者您可以
componentDidMount(){
AsyncStorage.getItem('id_token').then(this.getData)
}
getData=(token)=>{
fetch('http://192.168.0.125:8887/api/auth/activities/index',{
method: 'POST',
headers:{
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer '+ token,
},
})
.then((response) => response.json())
.then((res) => {
//console.log(res)
})
.catch((e) => console.log('Error: ', e))
}