如何在缓存中保存用户名和密码?反应性的

时间:2019-02-28 07:51:52

标签: react-native

我尝试将我的用户名和密码保存在缓存中。我无法保存两个数据,所以我尝试仅在代码下保存用户名。

但是当我向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();
}

我如何保存用户名和密码这两个值?

2 个答案:

答案 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.setItemthis.setStateasync 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');
  }
}