rnn
rnn

Reputation: 2563

how to save username and password in cache ? react-native

I try to save my Username and Password in cache. I couldnt save two data so I try to save just username below code.

but when I enter letter to TextInput, data goes to

savedata()

but here, this.setState doesnt work I dont know why. Because when render page,

console.log("mykey : ", this.state.mykey );

gives me empty object

here is code

<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>

here is my methods

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();
}

Also how can I save two value which are username and password ?

Upvotes: 1

Views: 2763

Answers (2)

Abdulla Thanseeh
Abdulla Thanseeh

Reputation: 10526

You could try to store json as string and later parse json during get

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)
         }    
})
}

Upvotes: 2

Vu Luu
Vu Luu

Reputation: 790

AsyncStorage.setItem and this.setState are async funtion, so your console.log() will not be work as you wish. To console you can try

savedata = async (value) => {
  try {
    await AsyncStorage.setItem("myKey", value);
    this.setState({myKey: value}, () => {
      console.log("deneme",value);
    })
  } catch (error) {
    console.log('Store error');
  }
}

Upvotes: 1

Related Questions