我正在使用AsyncStorage.setItem
在服务器上设置数据,并尝试使用AsyncStorage.getItem
在另一个屏幕中访问该值。
1.我无法在token
中设置AsyncStorage
。
2.如何在异步存储中设置多个值,比如说我想从服务器响应中user_id
与此token
一起设置?
onPressRegister(){
fetch('http://192.168.1.7:3000/users/registration',{
method:'POST',
headers:{
'Accept': 'applictaion/json',
'Content-Type': 'application/json',
},
body:JSON.stringify({
contact:this.state.contact,
password:this.state.password,
})
})
.then((response) => response.json())
.then((responseData) =>
{
this.setState({
signup: responseData
});
setTimeout(() => {
Actions.firstScreen();
}, 2300);
AsyncStorage.setItem('token' ,this.state.signup.token);
});
}
我正在这样获取
componentDidMount(){
AsyncStorage.getItem('token').then((userid) =>{
this.setState({'userid': userid});
console.log(userid);
});
}
但是我看不到console
内的结果。 AsyncStorage.setItem
中有任何错误吗?此外,服务器响应看起来像这样
{ error: 0,
data: 'User registered Successfully',
userData:
{ pwd: 'vgh',
phone_no: '5',
user_name: '',
status: 1,
date: 2018-10-23T09:23:53.671Z },
user_id: [ { user_id: 5 } ],
token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' }
我还希望在user_id
中设置AsyncStorage
。这该怎么做?
答案 0 :(得分:1)
U可以使用async
和await
从AsyncStorage访问值。
async componentDidMount(){
let token = await AsyncStorage.getItem('token');
console.log(token);
}
答案 1 :(得分:0)
我认为您的问题来自setState的async属性。
如果您的responseData是一个对象(请使用console.log(typeof responseData)对其进行测试, 试试吧:
df
实际上,setState方法需要一段时间才能生效。当是最佳时机,而不是在代码中写入状态时,React native会设置状态(异步函数)。它不像变量集。
要知道的另一件事是何时调用getItem。如果仅在setItem之后(甚至在导航到另一个屏幕之后)调用它,则可能尚未设置(相同的异步原因)。然后,您可以这样做,以确保已设置您的商品:
cur1.rate <- merge(df, taux_change_vers_EUR, by.x="currency1", by.y="V1", all.y=FALSE)
cur2.rate <- merge(cur1.rate, taux_change_vers_EUR, by.x="currency2", by.y="V1", all.y=FALSE)
result <- cur2.rate
result$amount1.eur <- result$amount1*result$V2.x
result$amount2.eur <- result$amount2*result$V2.y
result
currency2 currency1 amount1 amount2 V2.x V2.y amount1.eur amount2.eur
1 CNY EUR 1654 6876 1.00000 6.92256 1654.000 47599.5226
2 HKD CAD 736 354 1.48836 7.83296 1095.433 2772.8678
3 HKD EUR 68797 63 1.00000 7.83296 68797.000 493.4765
4 HKD USD 6546 687 1.14720 7.83296 7509.571 5381.2435
这是在setItem方法末尾调用的回调