
JSX ืืจืืืืื ืจืืฉืื ืื
ืืืื ืึพReact: ืืฆืืจืช ืจืืืืื ืคืื ืงืฆืืื ืืืื ืขื JSX, ืฉืืืืฉ ืึพprops, ืจืื ืืืจ ืืื ืืื ืฉื ืชืืื.
ืืืืื ืฉืื ืืืจ ืฉืื ืขื ื ืืืื ืฆื ืืคืจืงืื ื ืคืจืืื.
React ื ืืืื ืื ืืื ืงืฉื ืืคืชื ืืืฉืงื ืืฉืชืืฉ ืืืืจื ืืื ืขื ืืฉืืืืช ืืืฉื ืืช. ืืคื ื React, ืคืืชืื ืึพfrontend ืืชืืกืก ืขื ืงืืฆื JS
, HTML
, ืึพCSS
ื ืคืจืืื, ืืืืคืืคื ืืื ืืืขื ืืคืื/ืืฉืืืื ืืืืฉ ืืื ืฉืื ืื.
ืืืฉืจ ืืืฉืชืืฉ ืจืฆื ืืืฆืข ืฉืื ืื ืืืชืจ, ืืืงืฉื ื ืฉืืื ืืฉืจืช ืืืื ืืืืืจ ืงืืฆืื ืืขืืืื ืื. ืื ืืืืื ืืจืขื ืื ืื ืชืืืคืื, ืงืื ืืืจืื ืืื ืืคืืืฆืืืช DOM ืืงืจืืช.
ืืืขืื ืืืืจืคื ืืืื ืจืืืื ืืคืืคื ืื ืืืืืื ืืืืืฉืืโืงืื JS ืฉืืื ืขืืื ืืฆืืื ืืืคืืคื ืืื ืื ืชืืื ืขืื ืืืื ืืืืจ. ืืืงืืื, ืืชืจืื ืืื Facebook ืื Airbnb ืืจืฉื ืขืืืื ืื ืืืื ืืืช ืืืืืืืช ืืฉืชืืฉ ืืืงื.
jQuery ืืงืื ืขื ืื ืืคืืืฆืืืช DOM ืืืฆืืชึพืืคืืคื ืื, ืืื ืขื ืืืื ืงืืฆื ืึพJS ืืชื ืคืื, ืืืงืื ืืคื ืึพSpaghetti Code. ืืืงืื ืืืืืงื ื ืงืืื, ื ืฉืืจื ื ืขื ืขืืืื ืื ื ืงืืืชืืื ืืืืืคืช ืืืงืื ืึพDOM ืืื ืืช.
ืืืื ื ืืืื ืืชืคืืกื ืฉื SPA (Single Page Application): ืืขืื ื ืืึพืคืขืืืช ืฉื ืืืคืืืงืฆืื, ืืื ืฉืืจ ืืขืืืื ืื ืงืืจืื ืืฆืึพืืงืื. ืกืคืจืืืช ืืืงืืืืช ืืื Backbone.js ืกืืื ืืจื, ืืื React (2011 ืืคืืืกืืืง, ืคืชืืื ืืฆืืืืจ ืึพ2013) ืืืืื ืืืื ืืงืืจืืืื, ืจืืืืื ืืฉืืืืฉ ืืืืจ ืึพVirtual DOM ืืขืืโืืื ืฉืื ื ืืช ืืืฉืืง.
useState
, useEffect
,useMemo
, useCallback
, useRef
ืืขืื. ืืคืฉืจ ืืื ืืช Hooks ืืืชืืืื (Custom Hooks) ืืื ืืฉืชืฃ ืืืืืงื ืืื ืจืืืืื. ืืฉ โืืืื Hooksโโืงืืจืืื ืืื ืจืง ืืจืืฉ ืืคืื ืงืฆืื ืืืขืืืคืืช ืื ืืชืื ืชื ืืื.react-router
ืื Next.js; ื ืืืืึพืืฆื: Redux, Zustand, Jotai, Context; ืืขืื ืช ื ืชืื ืื: TanStack Query, SWR; ืกืคืจืืืช UI: MUI, Chakra, shadcn/ui ืืขืื; ืืืืงืืช: React Testing Library, Jest. ืืงืืืื ืืืืืื ืืกืคืงืช ืชืื ืืืช, ืืืืืืืช ืืคืชืจืื ืืช ืืื ืฆืืจื ืืืขื.Vanilla JS: ืืืืคืจืืืื ืื ืืืขื ืืฉืืจื ืึพDOM. React: ืืงืืจืืืืโืืชืืจืื UI ืืคืื ืงืฆืื ืฉื state ืึพReact ืืกื ืืจื ืช.
JSX ืืื ืชืืืืจ ืืืืื ืฉืืฉืื ืืื JavaScript ืึพHTML. ืืื ืืืคืฉืจ ืื ื ืืืชืื ืงืื ืฉื ืจืื ืืื HTML ืืื ืืชื ืื ืืื JavaScript. ืื ืืคืฉืจ ืืชืืจ ืืช ืึพUI ืืฆืืจื ืงืจืืื ืืืจืืจื, ืืืงืื ืื ืื ืื ืืคืืืฆืืืช ืขื ืึพDOM ืืื ืืช.
ื ืืื ืืื JSX ืขืืื, ืืื ืืื ืืืืจ ืืงืื JavaScript ืจืืื ืืืืืจื ืืงืืขืื, ืื ืจืื ืืืืืืืช ืืกืืกืืืช ืืฉืืืืฉ ืื ืืชืื ืจืืืืื.
ืืชืจ ืึพReact ืืชืืื ืืคืืจืืง ืืจืืืืื: Header, Navbar, Hero, Cards, Footer. ืืืืฆืขืืช JSX ืื ืื ื ืืืชืืื ืืช ืืื ื ืึพUI ืืฆืืจื ืงืจืืื, ืืขืืืจืื props ืืื ืจืืืืื, ืืืืืืจืื ืจืืืืื ืืืืจืื.
(ืืฉืชืขืื ืืช ืืืชืจ ืืืืฉื โ ื ืื ืืก ืืื ืืืืื ืืื/ืชืืื ื ืฉื ืืืชืจ ืื ืคืจืง ืืืชื ืืจืืืืื.)
JSX ืืื ืชืืืืจ ืฉืืืคืฉืจ ืืืชืื ืงืื ืฉื ืจืื ืืื HTML ืืชืื JavaScript. ืื ืื ืื ื ืืชืืจืื ืืช ืึพUI ืืฆืืจื ืืงืืจืืืืืช ืื ืงืืื, ืืจืืืงื ืืืจ ืืืืืช ืืกื ืืจื ืืช ืืืกื ืขื ืึพstate.
ืืชืืช ืชืจืื ืฉืชื ืืืืืืืช ืงืฆืจืืช: ืฉืืืื ืืืืืืื ืืชืื JSX, ืืจืื ืืืจ ืจืฉืืื ืืื ืืืช ืืขืืจืช map
.
ืืคืฉืจ ืืฉืื ืืืฉืืืื, ืชื ืืื ืงืฆืจืื ืึพclassName ืืื ืื:
function Welcome({ user }) {
const isAdmin = user.role === "admin";
return (
<header className={isAdmin ? "p-3 bg-green-100" : "p-3 bg-blue-100"}>
<h1>ืฉืืื, {user.name}!</h1>
<p>2 + 2 = {2 + 2}</p>
<small>{isAdmin ? "ืืฉ ืื ืืจืฉืืืช ื ืืืื" : "ืืฉืชืืฉ ืจืืื"}</small>
</header>
);
}
// ืฉืืืืฉ:
// <Welcome user={{ name: "ื ืืขื", role: "admin" }} />
2 + 2 = 4
ืืฉ ืื ืืจืฉืืืช ื ืืืืื ืื ื ืืขืจื ื ืชืื ืื ืื ืจื ืืจ ืืืชื ืึพJSX. ืืฉืื ืืชืช key
ืืืืืื ืืื ืคืจืื.
const courses = [
{ id: 1, title: "ืืืื ื-React" },
{ id: 2, title: "JSX ืืจืืืืื" },
{ id: 3, title: "Hooks ืืกืืกืืื" },
];
function CoursesList() {
return (
<ul>
{courses.map((c) => (
<li key={c.id}>{c.title}</li>
))}
</ul>
);
}
// ืฉืืืืฉ:
// <CoursesList />
ืืืจื ืืืืืจืืช ืขื JSX ื ืื ื ืืชืจืื ืงืื ืื: ืืืชืจืช, ืชืคืจืื, ืืคืชืืจืื, ืืชืืื ืืกืืกื. ื ืชื ืกื ืืืขืืจืช ื ืชืื ืื ืืื ืจืืืืื ืืืืฆืขืืช props, ืื ืืื ืืื ืืืืงืื ืืชืจ ืืจืืืืื ืงืื ืื ืืฉืืืืฉ ืืืืจ.
ืืืืจื: ืืืืื ืืื ืืคืจืงืื ืืชืจ ืืืืงืื ืืจืืจืื ืืืื ืื ืืืฉืง ืคืฉืื ืืืืื.
Hooks ืื ืืื ืฉื React ืืืืืจื ืืช. ืื ืืืคืฉืจืื ืื ืื state, ืืืืืจ ืืืื ืฉื ืจืืืืื (lifecycle), ืฉืืืืฉ ืึพcontext ืืขืื โ ืืื ืื ืืชืื ืจืืืื ืคืื ืงืฆืื ืคืฉืืืื.
ื ืืื ืืช ืึพHooks ืืืกืืกืืื: useState
, useEffect
,useRef
, ืื ืืื ืืช ืืืืืื ืืืฉืืืื: ืงืจืืื ืจืง ืืจืืืืื/ืคืื ืงืฆืืืช, ืื ืืชืื ืชื ืืื/ืืืืืืช, ืืฉืืืช ืฉืืชืืืืื ืึพuse
.
use
(ืืื useState
, useEffect
).if
,for
ืื while
โ ืื ืืืืืื ืืืืคืืข ืชืืื ืืืืชื ืกืืจ.set
ืื ืืขืืื ืช state ืืืืคื ืืืืื, ืืื ืืชืืื ืช ืขืืืื ืืจืื ืืืจ ืืื.Hooks ืื ืคืื ืงืฆืืืช ืฉืืชืืืืืช ืึพuse
ืืืืคืฉืจืืช ืื ืื state, ืืืืืจ ืืืื (lifecycle), ืืืฉื ืึพ ref, ืึพcontext โ ืืชืื ืจืืืื ืคืื ืงืฆืื. ืื ืืืืืคืื ืฆืืจื ืืืืืงืืช ืืืคืฉืืื ืฉืืชืืฃ ืืืืืงื (ืืจื Custom Hooks).
๐ ืืื ืชืืฆืื ืืช ืื ืืืืืืืืช ืืืคืจืืืงืืื ืืื ืืงืืืืจืืืช โ ืืื ืืชืืืืื ืืื ืืฉืืื ืฉืืืืืื React.
ืืืื ืึพReact: ืืฆืืจืช ืจืืืืื ืคืื ืงืฆืืื ืืืื ืขื JSX, ืฉืืืืฉ ืึพprops, ืจืื ืืืจ ืืื ืืื ืฉื ืชืืื.
ืฉืืืืฉ ืึพuseState, ื ืืืื ืืืจืืขืื (onClick, onChange) ืืืฆืืจืช ืืื ืืจืืงืฆืื ืขื ืืืฉืชืืฉ.
ืฉืืืืฉ ืึพreact-router-dom ืื ืืืื ืืื ืขืืืืื: Routes, Link, useParams, useNavigate.
ืืฆืืจืช ืืคืกืื ืขื ืืงืจื ืืืื, ืืืืืฆืื ืืกืืกืืช ืืฉืืืืฉ ืึพcontrolled components.
ืฉืืืืฉ ืึพfetch ืื axios ืืฆืจืืืช ืืืืข ืืืฆืื ื ืืืฆืืช ื ืชืื ืื ืืจืืืืื.
ืฉืืชืืฃ ื ืชืื ืื ืืื ืจืืืืื ืฉืื ืื ืืขืืจืช React Context ืึพuseContext.
ืคืจืืืงื ืืกืืกื ืืืืืื ืืื ืืืฆืืจ ืืืืฆืื ืืื ื ืืขืืจืช useState.
ืคืจืืืงื ืฉืืจืืฅ ืืืืืจ ืื ืงืจืืืช API ืืฉืืขืืื ืืช ืืจืืื, ืขื ื ืืงืื ื ืืื.
ืฉืืืืฉ ืึพuseRef ืืืคื ืืืช ืคืืงืืก ืืฉืื ืงืื ืื ืืืืืช ืืืื ืจืืื.
ืืืืื ืฉื ื ืืืื ืืฆืืื ืืืจืืืื โ ืืืกืคื/ืืกืจื ืฉื ืคืจืืืื ืืขืืื.
ืืืฉืื ืกื ืกืืื ืจืง ืืืฉืจ ืืื ืืืขืจืืื ืืฉืชื ื โ ืืืคืืืืืืฆืื.
ืืขืืจืช ืคืื ืงืฆืืืช ืึพprops ืืืื ืืืจืื ืืจืื ืืืจ ืืืืชืจ ืฉื ืจืืืืื.
ืืืืื ืืชื ืืืฉืชืืฉ ืึพuseLayoutEffect ืืื ืึพuseEffect.
ืืฆืืจืช ืืืืื ืืืืืืืื ืืืคืกืื ืืื ืืืื ืืฆืืจื ื ืืืฉื ืื ืืื ื.
ืืืจื ืฉื ืืืจ ืืช ื-Hooks ืื ืจืื ืืืืืืืช ื-PortfolioMain
, ื ืืืฉื ืืืชื ืืื ืืืช ืืชืจืื ืืืจืืืื: ื ืืชืื ืืื ืขืืืืื, ืืคืกืื ืขื ืืืืืฆืื, ืืขืื ืช ื ืชืื ืื, ืฉืืชืืฃ ืืืืืงื ืขื Custom Hooks ืืขืื.
ื ืชืจืื ืื Hook ืขื ืคืจืืืงื ืงืื: useState ืขื ืืื ื,useEffect ืืืขืื ืช ื ืชืื ืื, useRefืื ืืืื DOM, ืึพuseContext ืื ืืืื ื ืชืื ืื ืืื ืจืืืืื.
ืืืืจื: ืืืืื ืืื ืื Hook ืคืืชืจ ืืขืื ืืืืชืืช ืืื ืืืช ืืืฉืืืื ืืื ืืจืืงืืืืืื.
ืืืจื ืืืื ื ืฉื Hooks ื ืื ื ืืชืจืื ืฉืืืื: ืืคื ืคืจืืคืื ืขื ืืืืข ืืื ืื, ืืคืกืื ืขื ืืืืืฆืื, ืืจืืืืื ืฉืืชืงืฉืจืื ืืื ืืื. ื ืฉืื Hooks ืืืชืืืื ืืืฉืืช (Custom Hooks) ืืื ืืืจืื ืืืืืงื ืฉืืืืจืช ืขื ืขืฆืื.
ืืื ืืืจ ื ืชืืื ืืืจืืืฉ ืืื React ืืืกืืช ืืื ืืืกืืจืช ืืช ืืงืื.
react-router
ืื Next.js).useMemo
, useCallback
,memo
, ืืคืืจืืง ืงืื (Lazy Loading).