Berikut ini adalah solusi lengkap yang menggabungkan jawaban terbaik dan komentar di bawahnya (yang mungkin membantu seseorang yang kesulitan untuk menyatukan semuanya):
UPDATE FOR ES6 (2019) - menggunakan fungsi panah dan perusakan objek
dalam komponen utama:
class ReactMain extends React.Component {
constructor(props) {
super(props);
this.state = { fruit: props.item.fruit };
}
handleChange = (event) => {
this.setState({ [event.target.name]: event.target.value });
}
saveItem = () => {
const item = {};
item.fruit = this.state.fruit;
// do more with item object as required (e.g. save to database)
}
render() {
return (
<ReactExample name="fruit" value={this.state.fruit} handleChange={this.handleChange} />
)
}
}
termasuk komponen (yang sekarang menjadi fungsional stateless):
export const ReactExample = ({ name, value, handleChange }) => (
<select name={name} value={value} onChange={handleChange}>
<option value="A">Apple</option>
<option value="B">Banana</option>
<option value="C">Cranberry</option>
</select>
)
JAWABAN SEBELUMNYA (menggunakan ikatan):
dalam komponen utama:
class ReactMain extends React.Component {
constructor(props) {
super(props);
// bind once here, better than multiple times in render
this.handleChange = this.handleChange.bind(this);
this.state = { fruit: props.item.fruit };
}
handleChange(event) {
this.setState({ [event.target.name]: event.target.value });
}
saveItem() {
const item = {};
item.fruit = this.state.fruit;
// do more with item object as required (e.g. save to database)
}
render() {
return (
<ReactExample name="fruit" value={this.state.fruit} handleChange={this.handleChange} />
)
}
}
termasuk komponen (yang sekarang menjadi fungsional stateless):
export const ReactExample = (props) => (
<select name={props.name} value={props.value} onChange={props.handleChange}>
<option value="A">Apple</option>
<option value="B">Banana</option>
<option value="C">Cranberry</option>
</select>
)
komponen utama mempertahankan nilai yang dipilih untuk buah (dalam keadaan), komponen yang disertakan menampilkan elemen yang dipilih dan pembaruan dikembalikan ke komponen utama untuk memperbarui keadaannya (yang kemudian memutar kembali ke komponen yang disertakan untuk mengubah nilai yang dipilih).
Perhatikan penggunaan prop nama yang memungkinkan Anda untuk mendeklarasikan metode handleChange tunggal untuk bidang lain pada formulir yang sama terlepas dari jenisnya.