Допустим, у меня есть компонент представления с условной визуализацией:
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
так. Всякий раз, когда я переключаю его на false и другое представление отображается, только 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
переключения?