Giả sử tôi có một thành phần chế độ xem có kết xuất có điều kiện:
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 trông giống như sau:
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>
);
}
}
Cho phép nói employedlà đúng. Bất cứ khi nào tôi chuyển nó thành false và chế độ xem khác hiển thị, chỉ unemployment-durationđược khởi tạo lại. Cũng unemployment-reasonđược điền trước giá trị từ job-title(nếu giá trị được đưa ra trước khi điều kiện thay đổi).
Nếu tôi thay đổi đánh dấu trong quy trình kết xuất thứ hai thành một cái gì đó như sau:
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>
);
}
}
Có vẻ như mọi thứ hoạt động tốt. Có vẻ như React chỉ không khác biệt 'chức danh công việc' và 'lý do thất nghiệp'.
Làm ơn cho tôi biết tôi đang làm gì sai ...
<div>. Các data-reactidthuộc tính dường như khác nhau trên cả div bao và trường đầu vào. job-titleđầu vào nhận được id data-reactid=".0.1.1.0.1.0.1", trong khi unemployment-reasonđầu vào nhận được iddata-reactid=".0.1.1.0.1.2.1"
unemployment-duration?
reactidthuộc tính giống hệt nhau job-titlevà unemployment-reasontrong ví dụ thứ hai (với khoảng khác) thì chúng khác nhau.
unemployment-durationcác reactidthuộc tính luôn luôn là duy nhất.
data-reactidtrên mỗi phần tửMyInput(hoặcinput, như đã thấy trong DOM) trước và sau khiemployedchuyển đổi?