Katakanlah saya memiliki komponen tampilan yang memiliki render bersyarat:
render(){
if (this.state.employed) {
return (
<div>
<MyInput ref="job-title" name="job-title" />
</div>
);
} else {
return (
<div>
<MyInput ref="unemployment-reason" name="unemployment-reason" />
<MyInput ref="unemployment-duration" name="unemployment-duration" />
</div>
);
}
}
MyInput terlihat seperti ini:
class MyInput extends React.Component {
...
render(){
return (
<div>
<input name={this.props.name}
ref="input"
type="text"
value={this.props.value || null}
onBlur={this.handleBlur.bind(this)}
onChange={this.handleTyping.bind(this)} />
</div>
);
}
}
Katakanlah employeditu benar. Setiap kali saya mengalihkannya ke false dan tampilan lain merender, hanya unemployment-durationdiinisialisasi ulang. Juga unemployment-reasonakan diisi sebelumnya dengan nilai dari job-title(jika nilai diberikan sebelum kondisi berubah).
Jika saya mengubah markup dalam rutinitas rendering kedua menjadi seperti ini:
render(){
if (this.state.employed) {
return (
<div>
<MyInput ref="job-title" name="job-title" />
</div>
);
} else {
return (
<div>
<span>Diff me!</span>
<MyInput ref="unemployment-reason" name="unemployment-reason" />
<MyInput ref="unemployment-duration" name="unemployment-duration" />
</div>
);
}
}
Sepertinya semuanya bekerja dengan baik. Sepertinya React gagal membedakan 'job-title' dan 'pengangguran-reason'.
Tolong beritahu saya apa yang saya lakukan salah ...
<div>. The data-reactidatribut tampaknya berbeda pada kedua div pembungkus dan field input. job-titlemasukan mendapat id data-reactid=".0.1.1.0.1.0.1", sedangkan unemployment-reasonmasukan mendapat iddata-reactid=".0.1.1.0.1.2.1"
unemployment-duration?
reactidatributnya identik job-titledan unemployment-reason, sedangkan pada contoh kedua (dengan span diff) atributnya berbeda.
unemployment-durationpara reactidatribut selalu unik.
data-reactiddi setiap elemenMyInput(atauinput, seperti yang terlihat di DOM) sebelum dan sesudahemployedpengalihan?