useEffect — Marka Qaybtu Shaqeyso
Mararka qaarkood qaybta React waxay u baahan tahay inay sameyso wax ka baxsan soo-bandhiga UI:
- Codsi xog ka keenaya API
- Dejinta timer ama interval
- Xiriirka events-ka adiga oo aan React isticmaalin
- Beddel cinwaanka bogga
Dhammaan waxan waxaa loo yaqaanaa side effects — waxayna marayaan useEffect.
Sida Ugu Fudud
import { useState, useEffect } from 'react';
function Cinwaan({ qoraal }) {
useEffect(() => {
document.title = qoraal;
});
return <h1>{qoraal}</h1>;
}
Tani waxay socoysaa kasta oo qaybtu dib u sawiranto — badanaa waa in ka badan. Taasi waxay na geysaa xulashada ugu muhiimsan: array-ka ku-xidhnaanshaha (dependency array).
Dependency Array — Xukumista Marka la Orod
useEffect(() => {
// Koodkan
}, [/* halkan ku dhig ku-xidhnaanshaha */]);
| Dependency Array | Goorta la orodsiiyo |
|---|---|
| Mana jirto | Kasta oo dib u sawir dhaco |
[] madhan | Hal mar oo keliya — marka qaybtu bilaabato |
[qiime] | Marka qiime beddesho |
function Magac({ userId }) {
const [magac, setMagac] = useState('');
useEffect(() => {
// Hal mar ayuu ordo marka userId beddesho
fetch(`/api/users/${userId}`)
.then(r => r.json())
.then(xog => setMagac(xog.magac));
}, [userId]); // ← userId waa ku-xidhnaanshaha
return <p>Ku soo dhowow, {magac}!</p>;
}
Tusaale Dhamaystiran: Codsi API
import { useState, useEffect } from 'react';
function DhibaatoGudaha() {
const [xog, setXog] = useState(null);
const [loading, setLoading] = useState(true);
const [khalad, setKhalad] = useState(null);
useEffect(() => {
let cancelled = false; // ka hortag xog-gelinta marka component-ku tago
async function keenXog() {
try {
const jawaab = await fetch('https://jsonplaceholder.typicode.com/posts/1');
if (!jawaab.ok) throw new Error('Codsigu fashilmay');
const natiijo = await jawaab.json();
if (!cancelled) {
setXog(natiijo);
setLoading(false);
}
} catch (err) {
if (!cancelled) {
setKhalad(err.message);
setLoading(false);
}
}
}
keenXog();
// Cleanup — orod marka component-ku baxo
return () => { cancelled = true; };
}, []); // ← hal mar oo keliya
if (loading) return <p>Waxaa la soo rarayo…</p>;
if (khalad) return <p style={{ color: 'red' }}>Khalad: {khalad}</p>;
return (
<article>
<h2>{xog.title}</h2>
<p>{xog.body}</p>
</article>
);
}
Maxaa muhiimka ah ee
cancelled? Haddii isticmaaluhu u wareego ka hor inta jawaabtu iman,cancelled = trueayaa uga hortageysaa in khalad xog-gelis ah dhaco.
Nadiifinta (Cleanup)
Waxyaabaha qaar waxay u baahan yihiin in la nadiifiyo — sida subscriptions ama timers:
function Saacad() {
const [wakhtiga, setWakhtiga] = useState(new Date());
useEffect(() => {
// Bilaaw timer
const id = setInterval(() => {
setWakhtiga(new Date());
}, 1000);
// Nadiifi marka component-ku baxo
return () => clearInterval(id);
}, []); // hal mar oo keliya
return <p>{wakhtiga.toLocaleTimeString('so-SO')}</p>;
}
Hadaan la nadiifin, timerku wuxuu socon doonaa xitaa marka qaybtu ka baaxday shaashada — taasi waxay keentaa xog-gelinta khaldan iyo memory leaks.
Xeerka Fudud
- Mar walba ku dar ku-xidhnaanshahaga ee aad isticmaasho gudaha
useEffect - Soo celi cleanup function haddii aad bilaabayso wax joogsanaya
- Isticmaal
async/awaitsi fiican — ma awoodo inaaduseEffectcallback-ka naftii async ka dhigto []madhan = “samee marka aad bilaabanayso, ka dibna waa ku dhamaaneyso”
Xirfad Dhaqameed
Saacadda Toos ah
Dhis qaybta React ah oo soo bandhigaysa saacadda toos ah ee la cusboonaysiinayso mid kasta oo ilbidhiqsi ah. Isticmaal useEffect iyo setInterval — oo xusuusnow nadiifinta!
Xiga: Hooks Dheeraad ah
React waxay leedahay hooks badan oo kale: useRef, useContext, useReducer, useMemo, useCallback. Laakiin useState iyo useEffect waa kuwa aad ugu badan isticmaali doontaa — bilowga sidaa ku socod.