3
{ 
     element.answers_data.map((answer, index) => 
      <View key={index} style={{paddingLeft: 20}}> 
      <TextInput 
      value = {answer.answer_text} 
      onChangeText={(answer_text) => { 
       this.setState({answer_text: answer_text}); 
      }} 
      /> 
      </View> 
    )} 

に複数のテキスト入力のために働いていません。しかし、それは動作していません。解決策を提示してください。事前に感謝this.setStateは、私は、配列内のTextInputコントロールを使用しています反応し、ネイティブ

答えて

1

が配列で、あなたもその反映state配列を作る必要があります。

constructor(props) { 
    super(props); 
    this.state = { 
     answers: element.answers_data.map((answer, index) => { 
      return answer.answer_text 
     }), 
    } 
} 

render() { 
    return (
     <View> 
     { 
     element.answers_data.map((answer, index) => 
      <View key={index} style={{paddingLeft: 20}}> 
       <TextInput 
        value = {this.state.answers[index]} 
        onChangeText={(answer_text) => { 
         /// Since state is immutable, construct a new array for modified answer for specific index. 
         this.setState({ 
          answers: [ 
           ...this.state.answers.slice(0, index), 
           answer_text, 
           ...this.state.answers.slice(index+1, this.state.answers.length) 
          ] 
         }); 
        }} 
       /> 
      </View> 
     ) 
     } 
     </View> 
    ) 
} 

状態は不変なので、あなただけのインデックスを持つ配列値を変更することはできません。 コードをチェックして、変更されたanswerの新しい配列を作成します。

+0

あなたの回答よりも多くあります。その正常に動作します。 ** this.state.answers.length-1 **を** this.state.answers.length **と置き換えただけです。 –

+0

はい、忙しかっただけでした。それはあなたもそれを見つけた素晴らしいです!私のコードを修正=) – Val

0

複数の入力を同じ状態フィールドを変更しようとしますか?
分ける必要がありますか?
Aboutは動作していませんが、コンポーネントの更新はどういう意味ですか、状態は変わらず、コールバックは起動せず、常に同じanswer_textなどを取得していますか?テキスト入力の場合は

関連する問題