假设我有一个视图组件,它有一个条件渲染:
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 只是无法区分“工作头衔”和“失业原因”。
请告诉我我做错了什么..。