如何使用AsyncStorage将一些数据用户输入保留为某些形式并将其保存到本地设备中

时间:2018-10-09 22:06:37

标签: javascript react-native

现在,我正在尝试将一些用户输入的数据保存为某些形式,并将其保留在用户的本地设备中。 但是,我有一个错误。 (下图)

enter image description here

我不知道为什么以及如何解决这个问题... 以下是我的代码。 这是“状态”。

class PersonalInfo1 extends React.Component {
 constructor(props) {
 super(props);
  this.state = {
   userInput: [
     { fullname: '' },
     { middleName: '' },
     { reason: '' },
     { birthPlaceCity: '' },
     { birthPlaceCountry: '' },
     { Citizinchip: '' },
     { aboutMaridge: '' },
     { fromTermOfMaridge: '' },
     { ToTermOfMaridge: '' },
     { nameOfSpouse:'' },
     { birthdateOfSpouse: '' },
     { fromTermOfExMaridge: '' },
     { ToTermOfExMaridge: '' },
     { nameOfExSpouse: '' },
     { birthdateOfExSpouse: '' },
    ],
   };
 }

这是其余的代码。

 componentDidMount() {
  AsyncStorage.getItem('userInput')
   .then((userInput) => this.setState({ userInput }));
}

 onChangeText(text, name) {
   AsyncStorage.getItem('userInput')
    .then((userInput) => {
    if (userInput !== null) {
      this.state.userInput[name] = text;
      AsyncStorage.setItem('userInput', userInput);
    }
  });
}


  const { userInput } = this.state;
  return (
    <ScrollView style={styles.container}>
    <InfoHeader navigation={this.props.navigation}>
     申請者情報1 
    </InfoHeader>
    <Notes />
    <QuestionTextSet
      onChangeText={(text) => this.onChangeText(text, 'fullname')}
      placeholder={'例:留学太郎'}
      value={userInput.fullname}
      editable
    >
      姓名(漢字表記)
    </QuestionTextSet>

1 个答案:

答案 0 :(得分:0)

this.state.userInput是以对象(例如{全名:})为值的索引数组(0,1,2 ...)。因此,您不能通过以下方式访问它:

this.state.userInput[name] = text;

尝试将this.state更改为以下内容:

this.state = {
    userInput:
        {
            fullname: '',
            middleName: '',
            reason: '',
            birthPlaceCity: '',
            birthPlaceCountry: '',
            Citizinchip: '',
            aboutMaridge: '',
            fromTermOfMaridge: '',
            ToTermOfMaridge: '',
            nameOfSpouse: '',
            birthdateOfSpouse: '',
            fromTermOfExMaridge: '',
            ToTermOfExMaridge: '',
            nameOfExSpouse: '',
            birthdateOfExSpouse: ''
        }
};

...如果您的情况可以接受的话。