Как получить значение входного текста при нажатии в ReactJS
Я изучаю ReactJS, и я хочу понять, как получить значения входного текста в ReactJS, используя простое событие onclick. Я следил за этим учебником, и хотя я могу получить параметр ввода текста. Но почему-то я не могу получить его ценность.
Я знаю, что это глупый вопрос, но я борюсь с этим.
Пожалуйста, проверьте мой код и дайте мне знать, что с ним не так.
var MyComponent = React.createClass({
handleClick: function() {
if (this.refs.myInput !== null) {
var input = this.refs.myInput;
var inputValue = input.value;
alert("Input is", inputValue);
}
},
render: function() {
return (
<div>
<input type="text" ref="myInput" />
<input
type="button"
value="Alert the text input"
onClick={this.handleClick}
/>
</div>
);
}
});
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
Вот jsfiddle для того же: ссылка jsfiddle
Ответы
Ответ 1
Прежде всего, вы не можете перейти на второй аргумент alert
, вместо этого используйте конкатенацию
alert("Input is " + inputValue);
Example
Однако для того, чтобы получить значения из ввода, лучше использовать такие состояния, как это
var MyComponent = React.createClass({
getInitialState: function () {
return { input: '' };
},
handleChange: function(e) {
this.setState({ input: e.target.value });
},
handleClick: function() {
console.log(this.state.input);
},
render: function() {
return (
<div>
<input type="text" onChange={ this.handleChange } />
<input
type="button"
value="Alert the text input"
onClick={this.handleClick}
/>
</div>
);
}
});
ReactDOM.render(
<MyComponent />,
document.getElementById('container')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container"></div>
Ответ 2
Есть два способа сделать это.
-
Создайте состояние в конструкторе, содержащем ввод текста. Прикрепите событие onChange к полю ввода, которое обновляет состояние каждый раз. Затем onClick вы можете просто предупредить объект состояния.
-
handleClick: function() { оповещения (this.refs.myInput.value); },