У меня есть компонент, который запускает focus()
для ref ref во время componentDidMount
и componentDidUpdate
.Также у меня есть функциональность, которая не срабатывает при закрытии, когда мы нажимаем снаружи.Когда я нажимаю снаружи onBlur
, я снова запускаю focus
, чтобы сосредоточиться на элементе.Каков наилучший подход?и почему в некоторых случаях я видел, что лучше использовать setTimeout onblur?
export class Test extends Component {
componentDidMount = () => this.focusContainer()
componentDidUpdate = () => this.focusContainer()
container = React.createRef()
focusContainer = () => this.container.current.focus()
render = () => {
return (
<div
style={{outline: 'none'}}
onKeyPress={this.captureInput}
onBlur={this.focusContainer} // or onBlur={() => setTimeout(() => this.focusContainer(), 0) } - why ?
ref={this.container}
// tabIndex is needed for focus/blur to work on non input type elements.
tabIndex={0}
>
<img src={scanTag} style={{maxWidth: '100%'}} alt='scan tag via scanner' />
..........
</div>
)
}
}