可以说我有一个具有条件渲染的视图组件:
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
(如果条件更改之前已给出值)。
如果我将第二个渲染例程中的标记更改为如下所示:
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
输入获取iddata-reactid=".0.1.1.0.1.2.1"
unemployment-duration
呢?
reactid
中,job-title
和的属性相同unemployment-reason
,而在第二个示例(带“ diff me”跨度)中,它们是不同的。
unemployment-duration
的reactid
属性始终是唯一的。
data-reactid
对每一个MyInput
(或者input
,如在DOM)的之前和之后的元素employed
开关?