สมมติว่าฉันมีองค์ประกอบมุมมองที่มีการแสดงผลตามเงื่อนไข:
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 มีลักษณะดังนี้:
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>
);
}
}
ให้พูดemployed
เป็นความจริง เมื่อใดก็ตามที่ฉันเปลี่ยนเป็นเท็จและมุมมองอื่น ๆ แสดงผลunemployment-duration
จะถูกกำหนดค่าเริ่มต้นใหม่เท่านั้น นอกจากนี้ยังunemployment-reason
ได้รับการเติมล่วงหน้าด้วยค่าจากjob-title
(หากให้ค่าก่อนที่เงื่อนไขจะเปลี่ยนแปลง)
ถ้าฉันเปลี่ยนมาร์กอัปในรูทีนการเรนเดอร์ที่สองเป็นแบบนี้:
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>
);
}
}
ดูเหมือนว่าทุกอย่างจะทำงานได้ดี ดูเหมือนว่า React จะไม่สามารถแยกแยะ "ตำแหน่งงาน" และ "เหตุผลการว่างงาน" ได้
ช่วยบอกทีว่าฉันทำอะไรผิด ...
data-reactid
แต่ละอย่างMyInput
(หรือinput
ตามที่เห็นใน DOM) ที่อยู่ก่อนและหลังemployed
สวิตช์คืออะไร