Digamos que tengo un componente de vista que tiene un render condicional:
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 se parece a esto:
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>
);
}
}
Digamos que employed
es verdad. Siempre que lo cambio a falso y la otra vista se procesa, solo unemployment-duration
se reinicializa. También unemployment-reason
se rellena previamente con el valor de job-title
(si se dio un valor antes de que cambiara la condición).
Si cambio el marcado en la segunda rutina de renderizado a algo como esto:
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>
);
}
}
Parece que todo funciona bien. Parece que React simplemente no logra diferenciar 'título del trabajo' y 'motivo de desempleo'.
Por favor dime qué estoy haciendo mal ...
<div>
. Los data-reactid
atributos parecen ser diferentes tanto en el div de envoltura como en el campo de entrada. job-title
la entrada obtiene id data-reactid=".0.1.1.0.1.0.1"
, mientras que la unemployment-reason
entrada obtiene iddata-reactid=".0.1.1.0.1.2.1"
unemployment-duration
?
reactid
atributos son idénticos en job-title
y unemployment-reason
, mientras que en el segundo ejemplo (con el intervalo diff) son diferentes.
unemployment-duration
el reactid
atributo es siempre único.
data-reactid
en cada uno de los elementosMyInput
(oinput
, como se ve en DOM) antes y después delemployed
cambio?