Как я могу переключать фокус в React.js между кнопками?

#javascript #reactjs

#javascript #reactjs

Вопрос:

Когда я открываю страницу, я хочу, чтобы она была сфокусирована на кнопке «Пуск», чтобы я мог нажать кнопку g для запуска секундомера. После того, как я его запущу, я хочу, чтобы фокус переместился на кнопку «Стоп», которую я могу остановить с помощью пробела. Я пытаюсь использовать ссылки, чтобы это произошло, но изо всех сил пытаюсь разобраться.

 import React, {useEffect, useReducer, useRef} from 'react';
import ReactDOM from 'react-dom';

class Home extends React.Component {

    // focus on start button before timer is started
    // once its started switch focus to stop button
    // redo

    constructor(props) {
        super(props);
        this.state = {milliSecondsElapsed: 0};
        this.updateState = this.updateState.bind(this);
        this.textInput = React.createRef();

    }

    updateState(e) {
        this.setState({milliSecondsElapsed: e.target.milliSecondsElapsed })
    }

    keyPress = (e) => {
        // g button
        if (e.keyCode == 71) {
            handleStart();
        }
    }

    keyPress = (e) => {
        // spacebar
        if (e.keyCode == 32) {
            handleStop();
        }
    }

    handleStart = () => {
        this.setState({
            milliSecondsElapsed: (0)
        });
        this.timer = setInterval(() => {
            this.setState({
                milliSecondsElapsed: (this.state.milliSecondsElapsed   1)
            });
        }, 10)
    }

    handleStop = () => {
        clearInterval(this.timer);
    }

    render() {
        return (

            
            <div className="index">
                <input value = {this.state.milliSecondsElapsed} onChange = {this.updateState} ref="myInput"></input>
                <button onClick = {this.handleStart}>START</button>
                <button onClick = {this.handleStop}>STOP</button>
            </div>

        );
    }

}

export default Home;
  

Комментарии:

1. Есть ли шанс, что вы привязываете события клавиатуры к запущенным независимо от событий кнопки? Я имею в виду использование OnKey*

2. Начните с документов и правильно назначьте свои ссылки: reactjs.org/docs/refs-and-the-dom.html#creating-refs . прямо сейчас вы устанавливаете ref в произвольную "myInput" строку.