我尝试将我的用户名和密码保存在缓存中。我无法保存两个数据,所以我尝试仅在代码下保存用户名。
但是当我向TextInput输入字母时,数据转到
savedata()
但是在这里,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();
}
我如何保存用户名和密码这两个值?
答案 0 :(得分:2)
您可以尝试将json存储为字符串,然后在获取过程中解析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)
}
})
}
答案 1 :(得分:1)
AsyncStorage.setItem
和this.setState
是async funtion,因此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');
}
}