Реагировать — передача нового значения в поле ввода из выходного компонента с помощью onClick

#reactjs #onclick #react-hooks #input-field

#reactjs #onclick #реагировать-перехваты #поле ввода

Вопрос:

Мне нужно иметь возможность получать выходное значение в новое поле ввода при нажатии кнопки, и я не понимаю, как этого добиться. Я довольно новичок в React и использую функциональные компоненты с реактивными перехватами, такими как useState.

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

Пока это мой базовый код:

 import React, {useState} from 'react';
import Output from "./Output.js"

export default function Calculator() {
  const [number1, setNumber1] = useState (0); 
  const [number2, setNumber2] = useState (0); 


  return (
    <div>

      <input id="first-number" value={number1} type="number" onChange={e => setNumber1( e.target.value)}/>
      <input id="second-number" value={number2} type="number" onChange={e => setNumber2( e.target.value)}/>

      <Output value={number1 number2}/>


      <button onClick={handleClick}>Click Here</button>

      <input id="new-input" />

    </div>
  )
}
 

Мой выходной компонент:

 import React from "react";

const Output = (props) => {
  return (
   <div className="outpout-box">
    {props.value}
   </div>
  )
}
 

Ответ №1:

Вы можете использовать другое состояние, например result :

 export default function Calculator() {
  const [number1, setNumber1] = useState (0); 
  const [number2, setNumber2] = useState (0); 
  const [result, setResult] = useState(number1   number2);

  const handleClick = event => {
    setResult(number1   number2)
  }

  return (
    <div>

      <input id="first-number" value={number1} type="number" onChange={e => setNumber1( e.target.value)}/>
      <input id="second-number" value={number2} type="number" onChange={e => setNumber2( e.target.value)}/>

      <Output value={result}/>


      <button onClick={handleClick}>Click Here</button>

      <input id="new-input" />

    </div>
  )
}