Входные данные удаляются при обновлении страницы в собственном Asyncstorage. - PullRequest
0 голосов
/ 02 октября 2018

Я новичок, чтобы реагировать на родной язык, и я пытаюсь ввести логин пользователя (он только для тестирования и не подключен к какому-либо серверу).Я могу хранить данные в Asyncstorage, но когда я обновляю страницу, все данные стираются.

вот мой код:

export default class TEST extends Component{

    componentWillMount(){
        this.state = {

            username:''
        }
    }

async _SaveInState(value) {
    try {
       await AsyncStorage.setItem('@MySuperStore:key', value);

        console.log('getting ok')

    }catch (error) {
        console.log('error in Gett'+error)

    }
}

async _SotreInStorage(){
    try {
        let value = await AsyncStorage.getItem('@MySuperStore:key')
        this.setState({username:value});

        console.log('saving  ok')

    }catch (error) {
        console.log('error in saving'+error)

    }
}


render(){
    return(
        <View>
            <TextInput  onChangeText={(value) => this._SaveInState(value)} 
                   defaultValue={this.state.username}/>
            <TouchableOpacity onPress={() => this._SotreInStorage()}>

                <Text>ثبت نام</Text>

            </TouchableOpacity>
            <Text>{this.state.username}</Text>
        </View>
    )
}

1 Ответ

0 голосов
/ 07 октября 2018

constructor(props) {
  super(props);
  this.state = {
   username: ''
  }
}

async storeUserName(username) {
  try {
    await AsyncStorage.setItem('username', username);
    console.log("Data saved successfully");
    // Rest of your code
  } catch (error) {
    console.log("Error while storing the username");
  }
}


async retrieveUserName() {
  try {
    const username = await AsyncStorage.getItem('username');
    if (token !== null) {
      console.log("User Name",username );
      return username;
    }
   } catch (error) {
     console.log("Error while storing the token");
   }
}


componentDidMount() {
  this.retrieveUserName()
  .then((username)=> { 
    if(username) this.setState({username: username})
  })
}

render(){
  return(
    <View>
      <TextInput
        onChangeText={(value) => this.setState({username: value})} 
        defaultValue={this.state.username}/>
      <TouchableOpacity onPress={() => this.storeUserName()}>
        <Text>ثبت نام</Text>
      </TouchableOpacity>
      <Text>{this.state.username}</Text>
    </View>
  )
}
  
...