【发布时间】:2020-05-11 18:47:44
【问题描述】:
我有用于密码输入的 FormControl,带有切换掩码的图标,所以你看不到你正在输入的字符。但每当我切换此蒙版时,我也想重新聚焦输入字段。
<FormGroup
className="input-text input-text--password"
controlId={id}
validationState={submitFailed && touched && error ? 'error' : validationState}
>
<FormControl
{...input}
disabled={disabled}
className="input-text__input"
autoFocus={autoFocus}
type={maskEnabled ? 'password' : 'input'}
onChange={this.handleFormControlChange}
maxLength={maxLength}
ref = { ref => this.textInput = ref }
/>
<div
className={'input-text__button ' + (maskEnabled ? 'mask-enabled' : 'mask-disabled')}
onClick={this.handleToggleInputMode}
/>
...我用这个方法对焦:
handleToggleInputMode() {
let newMaskEnabled = !this.state.maskEnabled;
this.setState({maskEnabled: newMaskEnabled});
this.textInput.focus();
}
但我不断收到错误
未捕获的 TypeError:this.textInput.focus 不是函数
所以我尝试将其放入 ComponentDidMount 但随后整个组件停止响应(不接受我输入的任何字符)。 我错过了什么?
【问题讨论】:
-
也许提供整个组件的代码
-
relevant: github.com/facebook/react/issues/9328#issuecomment-298438237 - 可以用
null调用 - 也在这里阅读关于anon funcs的警告。 facebook.github.io/react/docs/refs-and-the-dom.html#caveats
标签: javascript jquery reactjs