조건부 렌더링이있는 뷰 구성 요소가 있다고 가정 해 보겠습니다.
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
from 값으로 미리 채워 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가 '직위'와 '실업 이유'를 구별하지 못하는 것 같습니다.
내가 뭘 잘못하고 있는지 말해줘 ...
<div>
. data-reactid
속성은 포장 DIV 및 입력 필드 모두 다른 것 같다. job-title
입력 ID를 가져옵니다 data-reactid=".0.1.1.0.1.0.1"
동안 unemployment-reason
입력 ID를 가져옵니다data-reactid=".0.1.1.0.1.2.1"
unemployment-duration
어떨까요?
reactid
속성은 job-title
및 unemployment-reason
에서 동일하지만 두 번째 예 (diff 범위 포함)에서는 서로 다릅니다.
unemployment-duration
reactid
data-reactid
의 각의MyInput
(또는input
, DOM에서와 같이) 전후의 요소employed
스위치?