Dəyərin bir mənbəyi olsun
İdarə olunan input-un value dəyəri state-dən gəlir, onChange isə state-i yeniləyir. Checkbox üçün checked istifadə olunur. value verib onChange yazmasan istifadəçinin dəyişikliyi state-də saxlanmayacaq.
import { useState } from 'react';
export default function ProfileFields() {
const [name, setName] = useState('');
const [notify, setNotify] = useState(false);
const [visited, setVisited] = useState(false);
return <section>
<label htmlFor="name">Ad</label>
<input id="name" value={name}
onChange={event => setName(event.target.value)}
onFocus={() => setVisited(false)} onBlur={() => setVisited(true)} />
{visited && !name.trim() && <p>Adını daxil et.</p>}
<label><input type="checkbox" checked={notify}
onChange={event => setNotify(event.target.checked)} /> Bildiriş al</label>
<p>{name || 'Ad daxil edilməyib'} · {notify ? 'Bildiriş açıqdır' : 'Bildiriş bağlıdır'}</p>
</section>;
}
Fokus və ilkin dəyər
onFocus sahəyə giriş, onBlur çıxış barədə xəbər verir. Xəta mesajını istifadəçini yazmağa başlayanda narahat etmədən uyğun vaxtda göstər. htmlFor ilə label-ı input id-sinə bağla.
Mətn üçün ilkin state-i boş sətir saxla; əvvəl undefined sonra mətn vermək idarə olunma rejimini dəyişə bilər. Yalnız ilkin dəyər lazım olan idarə olunmayan sahədə defaultValue istifadə edilə bilər. Girişin dəyəri rəqəm görünəndə də çox vaxt mətndir; hesablamadan əvvəl açıq çevirmə və validasiya et.