У меня небольшая проблема, когда я учусь реагировать - я бы хотел расфокусировать (a.k.a blur()
) кнопочный элемент DOM, но по какой-то причине это не совсем работает.
Я думаю, что проблема в том, что я могу прочесть, заключается в использовании компонента Button
реактивного ремня:
<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>
Я связываю ссылку на компонент? Я думаю, именно поэтому он не работает.
Работает функция 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
);
}
Вот и мой конструктор Компонентов:
constructor(props) {
super(props);
this.buttonBlurRef = React.createRef();
this.state = {
hasCopiedToClipboard: false,
};
this.handleCopyToClipboardClick = this.handleCopyToClipboardClick.bind(this);
}
Любой совет о том, как я могу расфокусировать мой Bootstrap Button
, был бы великолепен! :)