Sự kiện thay đổi được kích hoạt trên <select>
phần tử, không phải <option>
phần tử. Tuy nhiên, đó không phải là vấn đề duy nhất. Cách bạn xác định change
hàm sẽ không gây ra sự tái xuất hiện của thành phần. Có vẻ như bạn chưa nắm bắt được hoàn toàn khái niệm React, vì vậy có lẽ "Thinking in React" sẽ giúp ích.
Bạn phải lưu trữ giá trị được chọn làm trạng thái và cập nhật trạng thái khi giá trị thay đổi. Cập nhật trạng thái sẽ kích hoạt sự đăng ký lại 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>
các phần tử không có value
thuộc tính. React / JSX chỉ đơn giản là sao chép cú pháp HTML nổi tiếng, nó không đưa ra 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 <p>
phần tử thì chỉ cần đặt bên trong nó, giống như bạn làm với bất kỳ nội dung tĩnh nào.
Tìm hiểu thêm về xử lý sự kiện, điều khiển trạng thái và biểu mẫu:
value
giống với văn bản bên trong?