我试图将我的用户名和密码保存在缓存中。我无法保存两个数据,所以我尝试将用户名保存在代码下面。
但是,当我向TextInput输入信函时,数据会转到
保存数据()
但是在这里,this.setState不工作,我不知道为什么。因为当渲染页面时,
Console.log(mykey:),this.state.mykey;
给我空的东西
这里是代码
<View style={styles.ChildViewStyle}>
<TextInput
value = {this.state.mykey}
placeholder= "Kullanıcı Adı"
placeholderTextColor="#fff"
onChangeText={(text) => this.savedata(text)}
keyboardType='email-address'
onSubmitEditing={() => this.passwordInput.focus()}
style={styles.input}
/>
</View>这里是我的方法
savedata = (value) => {
AsyncStorage.setItem("myKey", value);
this.setState({myKey: value});
console.log("deneme",value);
}
componentDidMount(){
AsyncStorage.getItem("myKey").then((value) => {
this.setState({myKey: value});
console.log("didmounth : ", value)
}).done();
}还如何保存两个值,即用户名和密码?
发布于 2019-02-28 08:05:39
您可以尝试将json存储为字符串,然后在get期间解析json。
savedata = (username,password) => {
let value = {'username' : username, 'password':password}
await AsyncStorage.setItem('myKey', JSON.stringify(value));
this.setState({myKey: value});
console.log("deneme",value);
}
constructor(){
AsyncStorage.getItem("myKey").then((value) => {
if (value){
let valueParsed = JSON.parse(value)
this.setState({myKey: valueParsed});
console.log("didmounth : ", valueParsed)
}
})
}发布于 2019-02-28 08:00:39
AsyncStorage.setItem和this.setState是异步功能,因此您的console.log()不会按您的意愿工作。要安慰你,你可以试试
savedata = async (value) => {
try {
await AsyncStorage.setItem("myKey", value);
this.setState({myKey: value}, () => {
console.log("deneme",value);
})
} catch (error) {
console.log('Store error');
}
}https://stackoverflow.com/questions/54920809
复制相似问题