反应本机异步存储获取数据
React native asyncstorage get data
我在 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
}
嗯,AsyncStorage.getItem()是一个promise,所以需要在console.log之前使用await获取token。
const token = await AsyncStorage.getItem('id_token')
不要在 ComponentWillMount 中进行 api 调用。
在 ComponentDidMount 中执行此操作。
对于你的问题 -
试试 await 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))
}
我在 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
}
嗯,AsyncStorage.getItem()是一个promise,所以需要在console.log之前使用await获取token。
const token = await AsyncStorage.getItem('id_token')
不要在 ComponentWillMount 中进行 api 调用。 在 ComponentDidMount 中执行此操作。 对于你的问题 - 试试 await 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))
}