【发布时间】:2019-11-13 03:58:07
【问题描述】:
我有一个包含 3 个组件的模式。每个组件代表一个阶段,例如第一个组件是在用户点击下一步时输入用户的名字,它会转到下一个组件,即输入地址,然后用户点击下一步,它将把用户带到最后阶段,输入昵称。在组件中的每个input 元素上,它都会有一个autoFocus。到目前为止,在最后两个组件中,inputs 除了第一个组件外都有自动对焦。
不知道为什么第一个没有它,当我初始化模式时,我看到input 没有autoFocus,然后我点击下一个然后第二个组件input 有它,我走了回到第一个组件 - 点击后退按钮 - 然后我看到第一个组件中的 input 有一个 autoFocus。很奇怪,我一直在尝试很多方法来解决这个问题,从将autoFocus={false} 设置为模态,为第一个输入创建ref 但仍然无法正常工作。
看起来这是模式的问题,它被初始化的焦点在某处但不在input上。有人遇到过这个问题吗?
示例(伪)代码
//Component Hosting the modal
render(){
if(this.state.modal_stage === 1){
<FirstName />
}else if(this.state.modal_stage === 2){
<LasgtName />
}else if(this.state.modal_stage === 3){
<NickName />
}
return(
<Modal
dialogClassName="locationModal customModal"
show={this.state.modalShow} onHide={this.hideModal}
autoFocus="false">
<Modal.Header>
<div className="closeModal" onClick={this.hideModal}></div>
</Modal.Header>
<Modal.Body>
{ current_stage}
</Modal.Body>
<Modal.Footer>
{backButton}
{nextButton}
</Modal.Footer>
</Modal>
);
}
//<FirstName /> component
constructor(props){
super(props)
this.inputRef = React.createRef();
}
componentDidMount(){
this.inputRef.current.focus();
}
....
render(){
return(
<div>
<input type="text" placeholder="firstName" ref={this.inputRef}/>
</div>
);
}
您的帮助将不胜感激!
注意:
我尝试在模态中将此autoFocus="false" 设置为autoFocus={false},但问题仍然存在。
【问题讨论】:
-
Modal 组件应该是
autoFocus={false}而不是autoFocus="false"。 -
我试过了,问题依旧
-
你能用代码沙箱之类的一些可行的代码来复制这个问题吗?这样我们就可以更轻松地帮助您解决问题。
标签: javascript reactjs react-bootstrap