Komponent və render sualları
- React nəyi həll edir? İnterfeysi məlumatdan təsvir edib təkrar istifadə edilən komponentlərlə idarə etməyə kömək edir.
- Virtual DOM və render? React element təsvirlərini müqayisə edir; render görünüşü hesablayır, DOM-a tətbiq commit mərhələsində olur.
- JSX nədir? JavaScript daxilində interfeys təsvir edən, build zamanı çevrilən sintaksisdir; adi HTML deyil.
- HTML elementi və komponent? Kiçik hərfli teq host elementini, böyük hərfli ad öz komponentini göstərir.
- Props və state? Props valideyndən giriş, state komponentin yaddaşıdır. Props-u birbaşa dəyişmə.
- setState dərhal dəyişirmi? Cari renderin snapshot-unu dəyişmir. Növbəti dəyəri əvvəlkindən hesablamaq üçün updater istifadə et. Sinif callback-i və effect-in məqsədlərini qarışdırma.
- Həyat dövrü və cleanup? Qlobal hadisə, taymer və sorğu resurslarını lazım olmadıqda burax. componentWillUnmount sinif təmizləməsidir; funksiyada effect cleanup istifadə olunur.
- İdarə olunan komponent? Input dəyəri state-dən gəlir və hadisə ilə yenilənir.
- Key nə üçündür? Eyni valideyndə elementin sabit kimliyini izləmək üçün; təsadüfi və dəyişən indeks həmişə uyğun deyil.
- Sinif və funksiya fərqi? Sinifdə render/this.state/lifecycle, funksiyada Hook-lar var; yeni nümunələri funksiya ilə yaz.
Flux və Redux sualları
Flux birtərəfli məlumat axını ideyasıdır. Redux-da dispatch edilən action reducer vasitəsilə yeni state-ə gətirir. Reducer saf funksiya olmalıdır. Sadə nümunə:
function counter(state = 0, action) {
if (action.type === 'increment') return state + 1;
return state;
}
console.log(counter(2, { type: 'increment' })); // 3
Redux yerli React state-ni qadağan etmir. Thunk asinxron işi reducer-dən kənarda əlaqələndirə bilər. Routing URL-ni görünən komponentə bağlayır; yol parametrini query-dən ayır. Promise, fetch, JSON və HTTP metodlarını API mövzusundan təkrar et. CSS üçün margin/padding, mövqeləşmə və display fərqlərini kiçik nümunə ilə izah et.
Praktik input tapşırığı
import { useState } from 'react';
export default function ClearInput() {
const [text, setText] = useState('Test');
return <section>
<label htmlFor="text">Mətn</label>
<input id="text" value={text} onChange={event => setText(event.target.value)} />
<button type="button" onClick={() => setText('')}>Təmizlə</button>
</section>;
}
Əvvəl ilkin dəyəri yoxla, sonra redaktə et, düymə və klaviatura ilə təmizlə. Boş girişdə təkrar təmizləmə də sabit işləməlidir.