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 employedes verdad. Siempre que lo cambio a falso y la otra vista se procesa, solo unemployment-durationse reinicializa. También unemployment-reasonse 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-reactidatributos parecen ser diferentes tanto en el div de envoltura como en el campo de entrada. job-titlela entrada obtiene id data-reactid=".0.1.1.0.1.0.1", mientras que la unemployment-reasonentrada obtiene iddata-reactid=".0.1.1.0.1.2.1"
unemployment-duration?
reactidatributos son idénticos en job-titley unemployment-reason, mientras que en el segundo ejemplo (con el intervalo diff) son diferentes.
unemployment-durationel reactidatributo es siempre único.
data-reactiden cada uno de los elementosMyInput(oinput, como se ve en DOM) antes y después delemployedcambio?