- 问题产生的原因: setState 重新render了, 而render函数中某个地方存在if else类似的判断,重新计算了if else 产生了新的内容, 改变了组件,导致失去焦点
例子:
<Pager>
组件存在if else
这里的内容是由Content 生成的,
里面的props.children由 if else来判断生成 ,
这是造成子组件input失去焦点的根源。
注意观察 pager的 <Content/>
子组件:
AddVipCardHome
这个组件存在一个input框,每次通过 onChange={this.handleChange}来获取输入值:
handleChange(event:any) {
this.setState({value: event.target.value});
}
这里每输入一个字都会setState,造成这个组件render执行了 ,
render执行后,由于Pager的Content 重新计算if else 产生了一个新的<div> {this.props.children}</div>
,
导致整个子组件的input框失去焦点
解决方法:
检查是否有类似if esle的结构,修改掉就好了
class PagerHome extends React.Component<{ requestStatus: RequestStatusType }, { requestStatus: RequestStatusType }> {
constructor(props: any) {
supe