Nehmen wir an, ich habe eine Ansichtskomponente mit einem bedingten Rendering:
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 sieht ungefähr so aus:
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>
);
}
}
Sagen wir, employed
ist wahr. Immer wenn ich es auf false umschalte und die andere Ansicht gerendert wird, wird nur unemployment-duration
neu initialisiert. Auch unemployment-reason
wird mit dem Wert aus vorbelegt job-title
(wenn ein Wert gegeben wurde , bevor der Zustand geändert).
Wenn ich das Markup in der zweiten Renderroutine in etwa so ändere:
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>
);
}
}
Es scheint, als ob alles gut funktioniert. Es sieht so aus, als würde React die Berufsbezeichnung und den Grund für die Arbeitslosigkeit nicht unterscheiden.
Bitte sag mir, was ich falsch mache ...
<div>
. Die data-reactid
Attribute scheinen sowohl im Wrapping-Div als auch im Eingabefeld unterschiedlich zu sein. job-title
Eingabe erhält ID data-reactid=".0.1.1.0.1.0.1"
, während unemployment-reason
Eingabe ID erhältdata-reactid=".0.1.1.0.1.2.1"
unemployment-duration
?
reactid
Attribute identisch job-title
und unemployment-reason
im zweiten Beispiel (mit der diff span) unterschiedlich.
unemployment-duration
das reactid
Attribut ist immer eindeutig.
data-reactid
auf jedem derMyInput
(oderinput
, wie in DOM zu sehen) Elemente vor und nach dememployed
Wechsel?