Mic*_*rts 1 javascript reactjs react-dom
我在学习 react 时遇到了一个小问题 - 我想不聚焦(又名blur())按钮 DOM 元素,但由于某种原因,这不太有效。
我认为这个问题,从我能读到的,是关于 reactstrapButton组件的使用:
<Button className={buttonClass} onClick={this.handleCopyToClipboardClick} ref={this.buttonBlurRef}>
<div className="d-flex justify-content-between">
<span></span>
<span>{ this.state.hasCopiedToClipboard ? 'Copied to clipboard!' : this.state.buttonText }</span>
<span><FontAwesomeIcon icon="copy" /></span>
</div>
</Button>
Run Code Online (Sandbox Code Playgroud)
我在一个组件上绑定了一个 ref?我认为这就是它不起作用的原因。
该onClick功能正在运行,我已将其包含在下面。我在我尝试过的东西中包含了一些注释掉的代码 - 所有这些都破坏了handleCopyToClipboardClick功能。
handleCopyToClipboardClick() {
this.setState(state => ({
hasCopiedToClipboard: !state.hasCopiedToClipboard
}));
// this.buttonBlurRef.current.blur(); <= This isn't working
// this.buttonBlurRef.blur(); <= This isn't working either
// this.refs.buttonBlurRef.current.blur(); <= Or this
// this.refs.buttonBlurRef.blur(); <= Nor this... :'(
setTimeout(
function() {
this.setState(state => ({
hasCopiedToClipboard: !state.hasCopiedToClipboard
}));
}.bind(this),
1500
);
}
Run Code Online (Sandbox Code Playgroud)
这也是我的组件构造函数:
constructor(props) {
super(props);
this.buttonBlurRef = React.createRef();
this.state = {
hasCopiedToClipboard: false,
};
this.handleCopyToClipboardClick = this.handleCopyToClipboardClick.bind(this);
}
Run Code Online (Sandbox Code Playgroud)
任何关于我如何可能分散我的 Bootstrap 的Button建议都会很棒!:)
您activeElement的文档中有一个属性,因此您可能只需调用document.activeElement.blur()它就可以了。您也可以尝试换一种方式,而不是在您的元素上调用模糊 - 将焦点放在其他元素上,例如整个文档:window.focus()或document.body.focus()。希望这可以帮助
| 归档时间: |
|
| 查看次数: |
9514 次 |
| 最近记录: |