Sự kiện thay đổi được kích hoạt trên phần tử <select>
, không phải là yếu tố <option>
. Tuy nhiên, đó không phải là vấn đề duy nhất. Cách bạn đã xác định hàm change
sẽ không gây ra sự tái xuất hiện của thành phần. Có vẻ như bạn có thể chưa hoàn toàn nắm bắt được khái niệm Phản ứng, vì vậy có thể "Thinking in React" sẽ giúp bạn.
Bạn phải lưu trữ giá trị đã chọn làm trạng thái và cập nhật trạng thái khi giá trị thay đổi. Việc cập nhật trạng thái sẽ kích hoạt một phần của thành phần.
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);
Cũng lưu ý rằng <p>
yếu tố không có một thuộc tính value
. React/JSX chỉ đơn giản là sao chép cú pháp HTML nổi tiếng, nó không giới thiệu các thuộc tính tùy chỉnh (ngoại trừ key
và ref
). Nếu bạn muốn giá trị được chọn là nội dung của phần tử <p>
thì chỉ cần đặt bên trong nó, giống như bạn sẽ làm với bất kỳ nội dung tĩnh nào.
Tìm hiểu thêm về điều khiển xử lý sự kiện, tiểu bang và hình thức:
Nguồn
2015-03-05 00:57:31