2016-05-16 16 views
0

反応ネイティブのアプリケーションでは、value属性を使用すると入力できないフォームを作成しました。すべての新しい文字が削除され、テキストボックスは前のフォームの状態にリセットされます。ReactNative:TextInputはデータバインディングのvalue-attributeと奇妙な動作をします

class LoginScreen extends Component { 

    constructor(props) { 
     super(props); 

     this.state = { 
      username: 'nobody', 
      password: '****' 
     }; 
     } 

    render() { 

     return (
      <View style={styles.container}> 
        ....... 
        <View style={styles.inputContainer}> 
         <TextInput 
          style={[styles.input, styles.whiteFont]} 
          placeholder="Username" 
          placeholderTextColor="#FFF" 
          value={this.state.username} 
         /> 

このコードを使用して入力することはできません。私がvalue-attibuteを削除すると、すべて正常に動作します。しかし、私はこのデータバインディングを使用したいと思います。

データバインディングでTextInput-Elementsを処理するにはどうすればよいですか?

更新:

私はまた、任意の成功せず、これを試してみました:

    <TextInput 
         style={[styles.input, styles.whiteFont]} 
         placeholder="Username" 
         placeholderTextColor="#FFF" 
         value={this.state.username} 
         ref= "username" 
         onChangeText={(username) => this.setState({username})} 
        /> 
+1

あなたは入力時に値を設定しますが、それを更新しません。したがって、テキスト入力の状態は決して更新されません。入力の値に状態を設定するonChangeイベントハンドラを使用してみてください – Maxwelll

+0

イベントハンドラの構文は少しオフになっています... – Maxwelll

+1

コードが私のために動作しているようですhttps://rnplay.org/apps/f1nKZQ –

答えて

2

あなたが値aに状態を設定するためにあなたのTextInputコンポーネントに以下のようなイベントハンドラを追加したいですユーザーの入力onChangeText={(text) => this.setState({username: text})}