2016-06-27 2 views
1

У меня есть компонент TextInput, который вызывает событие Ань OnChangeText ':Реагировать Native событие

<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}); 
    } 
} 

EDIT

Если вы хотите 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). –

Смежные вопросы