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 employed
là đú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-reactid
thuộ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
?
reactid
thuộc tính giống hệt nhau job-title
và unemployment-reason
trong ví dụ thứ hai (với khoảng khác) thì chúng khác nhau.
unemployment-duration
các reactid
thuộc tính luôn luôn là duy nhất.
data-reactid
trên mỗi phần tửMyInput
(hoặcinput
, như đã thấy trong DOM) trước và sau khiemployed
chuyển đổi?