получение значения в поле ввода с виртуальной клавиатуры в react

#javascript #reactjs

#javascript #reactjs

Вопрос:

Я работаю над часами обратного отсчета, которые имеют виртуальную цифровую панель (заданную в коде как кнопка) и три ввода (час, минута и секунда). теперь я хочу, чтобы всякий раз, когда я нажимаю поле ввода и набираю virtual numpad, он печатал значение только в этом поле.

  1. там я использовал три ссылки, чтобы получить элемент ввода и изменить их значение, но не знаю, как установить для конкретного поля
 const inputOne = useRef(null);
const inputTwo = useRef(null);
const inputThree = useRef(null);

  const changeValue = (val) => {
    inputOne.current.value  = setTime({hour: updatedHour   val, minute: updatedMinute, second: updatedSecond}); 
    inputTwo.current.value = setTime({hour: updatedHour, minute: updatedMinute   val, second: updatedSecond});
    inputThree.current.value = setTime({hour: updatedHour, minute: updatedMinute, second: updatedSecond   val}); 
    }

const changeTime = (e) => {
    setTime({ ...time, [e.target.name]: e.target.value });
  };
 
  1. это поля ввода, которые я использую, updatedHour, updatedMinute и updatedSecond являются частью состояния setTime.
   <input ref={props.inputOne} onChange={props.changeTime} name="hour"  placeholder="Hour"  value={props.updatedHour} />
          <input ref={props.inputTwo} onChange={props.changeTime} name="minute"  placeholder="Minute" value={props.updatedMinute} />
          <input ref={props.inputThree} onChange={props.changeTime} name="second"  placeholder="Second" value={props.updatedSecond} />
 
  1. это кнопки, которые создают виртуальную клавиатуру
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('1')}>1</button>
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('2')}>2</button>
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('3')}>3</button>  
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('4')}>4</button>
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('5')}>5</button>
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('6')}>6</button>  
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('7')}>7</button>
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('8')}>8</button>
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('9')}>9</button>  
  <button className="grid-item" tpye='button' >Prev</button>  
  <button className="grid-item" tpye='button' onClick={()=> props.changeValue('0')}>0</button>  
  <button className="grid-item" tpye='button' >Next</button>  
 

Ответ №1:

Я только что скопировал все, что вы писали, и добавил это stackblitz , и я добавил в него некоторые изменения. ссылка приведена ниже, надеюсь, вы найдете ее полезной:

ссылка на stackblitz для решения