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 employed
itu benar. Setiap kali saya mengalihkannya ke false dan tampilan lain merender, hanya unemployment-duration
diinisialisasi ulang. Juga unemployment-reason
akan 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-reactid
atribut tampaknya berbeda pada kedua div pembungkus dan field input. job-title
masukan mendapat id data-reactid=".0.1.1.0.1.0.1"
, sedangkan unemployment-reason
masukan mendapat iddata-reactid=".0.1.1.0.1.2.1"
unemployment-duration
?
reactid
atributnya identik job-title
dan unemployment-reason
, sedangkan pada contoh kedua (dengan span diff) atributnya berbeda.
unemployment-duration
para reactid
atribut selalu unik.
data-reactid
di setiap elemenMyInput
(atauinput
, seperti yang terlihat di DOM) sebelum dan sesudahemployed
pengalihan?