2016-06-27 45 views
1

我有一個TextInput組件調用一個「OnChangeText」事件:陣營本地事件

<TextInput onChangeText={(text) => this.setState({zip:text})}/> 

這工作正常。

現在我想調用事件改變一個函數:

<TextInput onChangeText={_handleTextChange}/> 

_handleTextChange(event) { 
     this.setState({zip: 
     event.nativeEvent.text}); 

    } 

這是行不通的。我得到以下錯誤:

不確定是不是(評估「event.nativeEvent.text」

如何發送「事件」對象_handleTextChange功能

感謝的對象, 亞龍

+0

你應該選擇一個接受答案。好問題,但。也幫助了我。 – MarAvFe

回答

8

onChangeText傳遞一個string到您的處理功能而非Event

class YourComponent { 
    render() { 
    // ... 
    return <TextInput onChangeText={this._handleTextChange.bind(this)}/>; 
    } 

    _handleTextChange(text) { 
    this.setState({zip: text}); 
    } 
} 

編輯

如果你想要一個Event而不是文本string,您可以使用onChange,而不是onChangeText

class YourComponent { 
    render() { 
    // ... 
    return <TextInput onChange={this._handleTextChange.bind(this)}/>; 
    } 

    _handleTextChange(event) { 
    this.setState({zip: event.nativeEvent.text}); 
    } 
} 
+0

謝謝!有效。你能指點我一個網站有每個事件的細節和什麼對象是通過? – Yaron

+1

不客氣!我看了[官方文檔](https://facebook.github.io/react-native/docs/textinput.html)。它缺乏細節,我不得不從例子中猜測。 –

+0

如果你有興趣,你可以看看[它的源代碼](https://github.com/facebook/react-native/blob/508cc06565c1a2ab6ec88dbb8d40d3a2962c198c/Libraries/Components/TextInput/TextInput.js#L699-L701)。 –