Обрађивање података форме кликом на дугме у React-у

У претходној лекцији смо радили тако да при уносу симбола у поље за унос у параграфу тренутно појави резултат. То, наравно, изгледа лепо, али има недостатак.

Замислимо да треба да урадимо неку "тешку", ресурсно захтевну операцију. Није баш оптимално радити је на сваки унос симбола - боље је сачекати коначни унос података и онда извршити потребну операцију једном и резултат приказати у параграфу.

За то нам треба дугме, при клику на које ће се извршавати наша ресурсно захтевна операција. У том случају ћемо опет имати да сваком пољу за унос одговара његово стање (state), плус нам је потребно још једно стање за снимање резултата операције и приказ њега на екран.

Погледајмо на примеру. Нека имамо два поља за унос и једно дугме. При клику на дугме хајде да пронађемо збир бројева, унетих у поља за унос.

Реализујмо:

jsxfunction App() {
  const [value1, setValue1] = useState(0);
  const [value2, setValue2] = useState(0);
  const [result, setResult] = useState(0);
  
  function handleChange1(event) {
    setValue1(event.target.value);
  }
  
  function handleChange2(event) {
    setValue2(event.target.value);
  }
  
  function handleClick() {
    setResult(Number(value1) + Number(value2));
  }
  
  return <div>
    <input value={value1} onChange={handleChange1} />
    <input value={value2} onChange={handleChange2} />
    
    <button onClick={handleClick}>btn</button>
    <p>result: {result}</p>
  </div>;
}

Може се користити скраћена варијанта:

jsxfunction App() {
  const [value1, setValue1] = useState(0);
  const [value2, setValue2] = useState(0);
  const [result, setResult] = useState(0);
  
  return <div>
    <input value={value1} onChange={event => setValue1(event.target.value)} />
    <input value={value2} onChange={event => setValue2(event.target.value)} />
    
    <button onClick={() => setResult(Number(value1) + Number(value2))}>btn</button>
    <p>result: {result}</p>
  </div>;
}
Задание 1

Дата су два поља за унос, два дугмета и параграф. Нека се у поља за унос уносе бројеви. При клику на прво дугме пронађите збир бројева, а при клику на друго дугме - производ. Резултат испишите у параграф.

Задание 2

Дата су два поља за унос, дугме и параграф. Нека се у поља за унос уносе датуми у формату 2025-12-31. При клику на дугме пронађите разлику између датума у данима и резултат испишите у параграф.

Задание 3

Модификујте претходни задатак тако да подразумевано у пољима за унос стоји тренутни датум.

Задание 4

Дато је поље за унос и параграф. У поље за унос уноси се број. При губитку фокуса испишите у параграф збир цифара унесеног броја.

Задание 5

Дато је поље за унос и параграф. У поље за унос уноси се број. При губитку фокуса испишите у параграф производ делилаца унесеног броја.