我尝试将用户名和密码保存在缓存中。我无法保存两个数据,因此我尝试仅保存在代码下方的用户名。
但是,当我输入到文本插图的信时,数据将转到
savedata()
,但是在这里,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();
}
我还可以保存两个值,这些值是用户名和密码?
您可以尝试将json存储为字符串,然后在get
中解析JSONsavedata = (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)
}
})
}
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');
}
}