frontend elmélet

This commit is contained in:
magdo
2026-03-17 23:53:10 +01:00
parent 8da3a1eb32
commit 28bd7661f5
69 changed files with 1072 additions and 9534 deletions
+43
View File
@@ -0,0 +1,43 @@
\section{Mellékhatások}
\begin{frame}{Mi az a mellékhatás (side effect)?}
\begin{block}{Definí­ció}
Mellékhatásnak nevezzük mindazt, ami a komponens \textbf{renderelésén kívül} történik: hálózati kérés, DOM-módosítás, timer beállítása, eseménykezelő regisztrálása.
\end{block}
\vspace{0.5em}
\begin{itemize}
\item A renderelési fázisban ilyen műveletek nem végzhetők --- a React elvárja, hogy a renderelés \textbf{tiszta} (mellékhatásmentes) legyen.
\item A \texttt{useEffect} hook nyújtja a lehetőséget arra, hogy e műveleteket \emph{renderelés után} hajtsuk végreh.
\end{itemize}
\end{frame}
\begin{frame}{\texttt{useEffect} --- mikor és hányszor fut le?}
\begin{itemize}
\item \textbf{Függőségi történk:} minden egyes renderelés után lefut --- általában nem ezt akarjuk.
\item \textbf{Üres történk (\texttt{[]}):} csak az első megjelenítéskor fut le egyszer --- pl. induló adatlekéréshez.
\item \textbf{Értékekkel (\texttt{[id, szuro]}):} amikor a felsorolt értékek bármelyike megváltozik, újra lefut.
\end{itemize}
\vspace{0.4em}
A függőségi történk tehát azt szabályozza, \textbf{mikor} akarjuk az effektet ismét futtatni.
\end{frame}
\begin{frame}{Cleanup --- takarítás az effect után}
\begin{block}{Miért kell cleanup?}
Ha egy komponens eltűnik az oldalról (pl. navigáció közben), az esetlegesen elindított timerek, eseményfigyelők tovább futnak, memóriaszivárgást okozva. A cleanup függvény ezt akadályozza meg.
\end{block}
\vspace{0.5em}
\begin{itemize}
\item Az effect \textbf{visszaadhat egy cleanup függvényt}: ez fut le a komponens unmountjakor, illetve az effect következő lefutása előtt.
\item Tipikus eset: \texttt{clearInterval}, \texttt{removeEventListener}, API kérés megszakítása (\texttt{AbortController}).
\end{itemize}
\end{frame}
\begin{frame}{Leggyakoribb hibák \texttt{useEffect}-tel}
\begin{alertblock}{Figyelem}
\begin{itemize}
\item \textbf{Hiányzó dependency:} ha egy változót használunk de nem szerepel a tömbben, a hook régi értékkel dolgozhat --- ez nehezen felderíthető hiba.
\item \textbf{Végtelen ciklus:} ha az effect frissít egy állapotot, ami maga is dependency, kör forgás indul.
\item \textbf{Túl sok logika egy effectben:} egy effect egy felelősséget kezeljen; ha kettőt kezelne, bontsuk szét.
\end{itemize}
\end{alertblock}
\end{frame}