2015-11-22 9 views
5

facebookにサンプルコードが見つかりました。ネイティブページは、setNativePropを使用してクリックでテキストをクリアする方法を示していますが、複数のテキストボックスを使用する方法はわかりません。ここでは、コードは次のとおりです。Reactネイティブクリアテキスト複数のTextInputボックス

var App = React.createClass({ 
    clearText() { 
    this._textInput.setNativeProps({text: ''}); 
    }, 

    render() { 
    return (
     <View style={styles.container}> 
     <TextInput ref={component => this._textInput = component} 
       style={styles.textInput} /> 
     <TouchableOpacity onPress={this.clearText}> 
      <Text>Clear text</Text> 
     </TouchableOpacity> 
     </View> 
    ); 
    } 
}); 

refはそう常に同じのTextInputボックスを対象とする関数で修正されているようです。指定したTextInputボックスを対象にするために関数を変更するにはどうすればよいですか?

答えて

8

これは動作するはずです。 TextInputのrefは、clearText関数から呼び出す必要があることに注意してください。

var App = React.createClass({ 
    clearText(fieldName) { 
    this.refs[fieldName].setNativeProps({text: ''}); 
    }, 

    render() { 
    return (
     <View style={styles.container}> 
     <TextInput ref={'textInput1'} style={styles.textInput} /> 
     <TouchableOpacity onPress={() => this.clearText('textInput1')}> 
      <Text>Clear text</Text> 
     </TouchableOpacity> 
     <TextInput ref={'textInput2'} style={styles.textInput} /> 
     <TouchableOpacity onPress={() => this.clearText('textInput2')}> 
      <Text>Clear text</Text> 
     </TouchableOpacity> 
     </View> 
    ); 
    } 
}); 

私の答えは、別のフィールドをクリアするように更新されました。

+0

ただし、あなたのonPressには値はありませんか?あなたはそれを別のonPressと区別して、別のテキスト入力をクリアしますか?あなたはまだ2つの別々の関数を作成する必要があります。 2つのtextinputsと2つのtouchableopacityボタンを使用して、1つの関数だけでどのように動作するかを示す例を表示できますか? – Hasen

+0

はそれに応じて私の答えを更新しました。 – eyal83

+0

Okは正しい行に沿っているようですが、実際には機能しません。それはあなたの最後に働いたのですか? – Hasen

1

また、このような方法でTextInputのテキストをクリアすることもできます。

clearText(fieldName) { 
    this.refs[fieldName].clear(0); 
},