2016-08-11 78 views
3

私は自分の関数で参照したいTextInputを持っています。反応がネイティブで反応しない

undefined is not an object (evaluating 'this.refs.body')

refが反応し、ネイティブで動作していない:

next() { 
     let body = this.refs.body.value 
    } 

<View> 
    <Text>Place the body here</Text> 
    <TextInput ref="body" placeholder="Your body goes here..." style={styles.body} placeholderTextColor='green'/> 
</View> 

しかし、私はこのエラーを取得していますか?

答えて

7

私は彼らがrefの仕方を変えたと思います。文字列の代わりに、refは、特定のコンポーネントがレンダリングされたときに呼び出される関数を受け入れます。あなたが好きなものを試みることができる

next() { 
let body = this._textInput.value 
} 

<View> 
    <Text>Place the body here</Text> 
    <TextInput ref={component => this._textInput = component} placeholder="Your body goes here..." style={styles.body} placeholderTextColor='green'/> 
</View> 

https://facebook.github.io/react-native/docs/direct-manipulation.html

それとも、あなたもあなたのTextInputにのonChangeを添付し、次のボタンがクリックされたときに入力を記録することができます。

編集:
Refは文字列を受け入れますが、廃止予定です。代わりにrefの関数を使用してください。

0

この問題は、まだマウントされていない要素を参照していることと関連している可能性があります。 componentDidMount以降で参照してくださいましたか?

+1

はい、そうです。コンポーネントをレンダリングした後、次のボタンを押すことができます。これは、 'componentDidMount'の後に私が次のボタンを押してもいいということではありませんか?私は非常に新しい私は残念です。 –

関連する問題