Hadisə funksiya qəbul edir
JSX-də onClick={handleClick} funksiyanı bağlayır; onClick={handleClick()} isə render zamanı çağırır. Arqument vermək üçün wrapper yaz: onClick={() => choose(id)}. State komponentin renderlər arasında saxladığı yaddaşdır.
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return <section>
<p>Say: {count}</p>
<button type="button" onClick={() => setCount(value => value + 1)}>Artır</button>
<button type="button" onClick={() => setCount(value => Math.max(0, value - 1))}>
Azalt
</button>
</section>;
}
State cari renderin snapshot-udur
Setter yeniləmə planlayır; cari funksiyadakı count dəyişəni dərhal yeni qiymət almır. Əvvəlki state-dən hesablama üçün updater funksiyası istifadə et. Ardıcıl iki setCount(value => value + 1) iki artımı düzgün növbələyir.
Sinifdə this.state və this.setState ilə rastlaşarsan. Sinif setState obyekt xassələrini birləşdirə bilir; useState setter-i bütün dəyəri əvəz edir. Obyekt yeniləyəndə saxlanmalı sahələri spread ilə köçür. State-i birbaşa dəyişmək React-ə etibarlı yeniləmə siqnalı vermir. Hadisədəki event.currentTarget və event.target fərqini burada da saxla.