2017-08-25 6 views
0

ユーザがTextInputにテキストを入力すると、onChangeTextonChangeが呼び出されます。反応したネイティブテキスト入力で新しくタイプされたテキストを取得するには?

  • 私はonChangeコールバックからeventを取得していますし、新しくevent.nativeEvent.textからテキストを更新することができます。

  • 私はonChangeTextコールバックからtextを取得していますし、新たにそれからテキストを更新することができます。

しかし、私は新しく入力したテキスト/文字のみが必要です。これを得る方法?例えば

: - は、我々はユーザータイプeようになりましたとすぐに、TextInputにテキストとしてsomを持っていると仮定することができますが、私はこれだけeの代わりに、テキスト全体someたい。

いずれか回避しますか?

答えて

0

文字列でこれを試してみてください、私は私がこれに関連する何かを見つけた場合、あなたが知っているだろうが、今のところ、あなたはこれで作業を得ることができます:)純粋なJSでこれを解決するために

0

あなたは以下のようにするTextInputののonChange機能を使用することができますのみ、新たに入力したテキストを取得するには: -

<TextInput 
    onChange={(event) => {console.log(event.nativeEvent.data)}} 
    onChangeText={(val) => {console.warn(val)}} 
/> 

としてはonChangeTextはあなたに完全なテキストを与えるだろうが、あなたはのonChangeからのイベントを使用することができ、指定新しく手紙を入手する。

EDIT

あなたのあなたがevent.nativeEvent.textで完全な新しいテキストとevent.nativeEvent.dataでいないデータを取得するネイティブの新しいバージョンを反応によります。だからあなたの要件のために、あなたは今のところ、以下のコードを使用することができます: -

   <TextInput 
       onChange={(evnt)=>{ 
         let newText = []; 
         let oldText = []; 

        for(let i=0;i<evnt.nativeEvent.text.length;i++) { 
         newText.push(evnt.nativeEvent.text[i]); 
         if(this.state.val[i]) { 
          oldText.push(this.state.val[i]);         
         } 
        } 
        let newLetter = ''; 
        for(let j=0;j<newText.length;j++) { 
         if(newText[j] !== oldText[j]) { 
          newLetter = newText[j]; 
          break; 
         } 
        } 
        console.log(newLetter); 
       }} 
       onChangeText={(val)=>{ 
        console.log(val); 
        this.setState({val}); 
       }} 
      /> 

あなたはnewLetterのコンソール内で、新たに入力された文字を取得します。我々はできる

getNewChar(str){ 
    return str[str.length - 1]; 
} 
+0

最初に取得します。 nativeEvent.data'の場合、 'event.nativeEvent.text'に変更されていれば動作しています。もう一つは、 'event.nativeEvent.text'から全文を取得しています。私は反応ネイティブのv0.47.1です。 –

+0

@VishweshJainkuniya私は上記の答えを更新しました。これであなたの望みの出力を得ることができます:) –

+0

おかげで、onSelectionChangeによって別のアプローチが得られました。 –

1

一つの方法新しく入力した文字を

InputonSelectionChangeの小道具を使って入力してください。 eventonSelectionChangeから得ることができ、cursorポジションを得ることができます。 cursorポジションとフルテキストで簡単にと入力してください。

例: - あなたは、新たに入力された文字を、いつでも

 <Input 
     ... 
     onChangeText={this.handleMessageChange} 
     onSelectionChange={this.handleMessageSelectionChange} 
     ... 
     /> 

や方法

handleMessageChange = (message: string) => { 
    this.setState({ message }); 
    }; 

handleMessageSelectionChange = (event: Object) => { 
    const { selection } = event.nativeEvent; 
    this.setState({ selection }); 
    }; 

は今、私は `イベントを使用して、未定義取得していますが、それは

getNewlyEnteredLetters =(): string => { 
     const { selection, message } = state; 
     const { start, end } = selection; 
     return start === end ? message[start -1 ] : message[message.length - 1] 
     }; // start === end implies that new letters are entered and not selection is made. 
+0

ユーザーが最後に必ず入力するかどうかはわかりません。 –

+0

おかげで、 'onSelectionChange'を介して別のアプローチが得られました –

関連する問題