条件付きレンダリングを持つビューコンポーネントがあるとします。
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
(条件が変更される前に値が指定された場合)。
2番目のレンダリングルーチンのマークアップを次のように変更すると、
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は 'job-title'と 'unmployment-reason'の比較に失敗したようです。
私が間違っていることを教えてください...
<div>
。data-reactid
属性にはラッピングのdivと入力フィールドの両方で異なるようです。job-title
inputはid data-reactid=".0.1.1.0.1.0.1"
をunemployment-reason
取得しますが、inputはidを取得しますdata-reactid=".0.1.1.0.1.2.1"
unemployment-duration
ですか?
reactid
、属性は、上同一であり、job-title
そしてunemployment-reason
、彼らしている別の第二の例では(差分スパンで)ながら。
unemployment-duration
reactid
data-reactid
のそれぞれにMyInput
(またはinput
、DOMに見られるように)前と後の要素employed
スイッチ?