2016-11-10 1 views
2

他のライブラリからインポートする<TextInput />を返すコンポーネントがあります。 TextInputはonChangeの小道具を持っています。function(value) { // do something with value} .soどのように私はそのvalueで観測可能にすることができ、どこでも観測可能なものを使用できますか?他のライブラリとの反応で観測可能にする方法

import TextInput from 'otherLibrary'; 
import Rx from 'rxjs/Rx'; 

export default class MyComponent extends PureComponent { 

    handleTextChange = (value) => { 
     this.observable = Rx.observable.from(value).do(() => console.log(value)) 
     // how to make an observable with `value`? If i just make it like this, every time input a letter in the TextInput will make a new observable, that's not correct. 
    } 
    render() { 

     return (

        <TextInput 
         defaultValue="" 
         onChange={this.handleTextChange} 
        /> 

     ); 
    } 
} 

答えて

1

コンポーネントはのonChangeであなたは以下にのonchangeのコールバックを変更する必要があり、この正しいを取得するために

this.setState({textInputValue: value}) 

を(使用して、コンポーネントの状態でこれを格納することができ、反応成分を返すの場合: )今

<TextInput 
     defaultValue="" 
     onChange={this.handleTextChange.bind(this)} 
/> 

、いつでもその状態が変化し、そしてあなたがたとえばあり、別のコンポーネントへの小道具として、その状態を渡し、そのコンポーネントが再レンダリングされます。

handleChange = (e) => {.. 

value= e.target.value 
+0

のように、私が正しくリコール場合はvalue.target.valueを使用する必要があり、変更上でのTextInputのうち、実際の値を取得し、多分混乱を避けるために何か他のものに値パラメータの名前を変更するには実際にはrxjsで観測値に値を作りたいと思っています。そうする方法はありますか? – Downpooooour

+0

@Downpooooour残念ながら、私はこのライブラリの経験がないので、私はそこにあなたを助けることができない:( –

関連する問題