Change olayı <select>
öğe üzerinde değil, <option>
öğe üzerinde tetiklenir . Ancak, tek sorun bu değil. change
İşlevi tanımlama şekliniz bileşenin yeniden oluşturulmasına neden olmaz. Görünüşe göre henüz Tepki kavramını tam olarak kavrayamamış olabilirsiniz, belki de "Tepki içinde Düşünme" yardımcı olabilir.
Seçilen değeri durum olarak kaydetmeniz ve değer değiştiğinde durumu güncellemeniz gerekir. Durumun güncellenmesi, bileşenin yeniden gönderilmesini tetikler.
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);
Ayrıca, <p>
öğelerin bir value
niteliği olmadığını unutmayın . JSX yeterlidir (hariç özel özellikler tanıtmak değil, tanınmış bir HTML sözdizimi çoğaltır / tepki key
ve ref
). Seçilen değerin <p>
öğenin içeriği olmasını istiyorsanız, herhangi bir statik içerikte yaptığınız gibi öğenin içine koymanız yeterlidir.
Olay işleme, durum ve form denetimleri hakkında daha fazla bilgi edinin:
value
aynısı olmadan iç metni nasıl alabilirim ?