Подія зміни запускається на <select>
елементі, а не на <option>
елементі. Однак це не єдина проблема. Те, як ви визначили change
функцію, не призведе до повторного відображення компонента. Здається, ви, можливо, ще не повністю зрозуміли концепцію Реагу, тому, можливо, "Мислення в реагуванні" допомагає.
Ви повинні зберігати вибране значення як стан та оновлювати стан, коли значення змінюється. Оновлення стану призведе до повторного відображення компонента.
var MySelect = React.createClass({
getInitialState: function() {
return {
value: 'select'
}
},
change: function(event){
this.setState({value: event.target.value});
},
render: function(){
return(
<div>
<select id="lang" onChange={this.change} value={this.state.value}>
<option value="select">Select</option>
<option value="Java">Java</option>
<option value="C++">C++</option>
</select>
<p></p>
<p>{this.state.value}</p>
</div>
);
}
});
React.render(<MySelect />, document.body);
Також зауважте, що <p>
елементи не мають value
атрибута. React / JSX просто копіює добре відомий синтаксис HTML, він не вводить власні атрибути (за винятком key
і ref
). Якщо ви хочете, щоб вибране значення було вмістом <p>
елемента, тоді просто покладіть його всередину, як і з будь-яким статичним вмістом.
Дізнайтеся більше про обробку подій, контроль стану та форми:
value
будучи таким же, як внутрішній текст?