2016-07-17 4 views
10

Я только начал использовать React.js, и я просто не знаю, есть ли специальный способ, чтобы получить значение текстового поля, возвращается в компоненте, как это:Как получить значение текстового поля в React?

var LoginUsername = React.createClass({ 
    render: function() { 
    return (
     <input type="text" autofocus="autofocus" onChange={this.handleChange} /> 
    ) 
    }, 
    handleChange: function (evt) { 
    this.setState({ value: evt.target.value.substr(0, 100) }); 
    } 
}); 

ответ

11

Как описано в documentation вы должны использовать контролируемый вход. Для того, чтобы вход - контролируемого вам нужно указать два реквизита на нем

  1. onChange - функция, которая будет установить компонент state на вход value каждый вход время изменяется
  2. value - входное значения от компонента state (this.state.value в примере)

Экзамен PLE:

getInitialState: function() { 
    return {value: 'Hello!'}; 
    }, 
    handleChange: function(event) { 
    this.setState({value: event.target.value}); 
    }, 
    render: function() { 
    return (
     <input 
     type="text" 
     value={this.state.value} 
     onChange={this.handleChange} 
     /> 
    ); 
    } 

Более конкретно о - текстовое поле here

+0

Итак, как бы я использовал приведенное выше, чтобы получить текущее значение текстового поля? – think123

+0

Заменив элемент 'input' на' textarea' –

3

просто обновить свой вклад в значение

var LoginUsername = React.createClass({ 
    getInitialState:function(){ 
    return { 
     textVal:'' 
    } 
}, 
    render: function() { 
    return (
     <input type="text" value={this.state.textVal} autofocus="autofocus" onChange={this.handleChange} /> 
    ) 
    }, 
    handleChange: function (evt) { 
    this.setState({ textVal: evt.target.value.substr(0, 100) }); 
    } 
}); 

текст входного значения всегда находится в состоянии, и вы можете получить то же самое, this.state.textVal

+0

Не могли бы вы предоставить Прецедент сценарий выше? – think123

+0

Если вы хотите предварительно заполнить textinput с сервера, тогда вам нужно указать поле в состоянии –

+0

. Я пытаюсь получить доступ к значению извне 'LoginUsername' - прямо сейчас я пытаюсь использовать' LoginUsername.state.textVal ', но он не работает для меня ... – think123