React logo

ืœืžื” React? ๐Ÿ’ก

React ื ื•ืœื“ื” ื›ื™ ื”ื™ื” ืงืฉื” ืœืคืชื— ืžืžืฉืงื™ ืžืฉืชืžืฉ ืžื•ื“ืจื ื™ื™ื... ืœืคื ื™ React, ืคื™ืชื•ื— ื”ึพfrontend ื”ืชื‘ืกืก ืขืœ ืงื‘ืฆื™ JS, HTML ื•ึพCSS ื ืคืจื“ื™ื...

ื›ืืฉืจ ื”ืžืฉืชืžืฉ ืจืฆื” ืœื‘ืฆืข ืฉื™ื ื•ื™ ื‘ืืชืจ, ื”ื‘ืงืฉื” ื ืฉืœื—ื” ืœืฉืจืช ื•ื”ื•ื ื”ื—ื–ื™ืจ ืงื‘ืฆื™ื โ€” ื•ื–ื” ื™ืฆืจ ืจืขื ื•ื ื™ื ืชื›ื•ืคื™ื...

ื”ื‘ืขื™ื” ื”ื•ื—ืจืคื” ื‘ื’ืœืœ ืจื™ื‘ื•ื™ ื“ืคื“ืคื ื™ื...

jQuery ื”ืงืœื” โ€” ืื‘ืœ ื”ืงื•ื“ ื”ืชื ืคื— ื•ื ื”ื™ื” Spaghetti Code, ื ื™ื”ื•ืœ DOM ื™ื“ื ื™โ€ฆ

ืžื›ืืŸ ื ื•ืœื“ื” ื”ื’ื™ืฉื” ืฉืœ SPAโ€ฆ ื•ึพReact (2011) ื”ื‘ื™ืื” ืžื•ื“ืœ ื“ืงืœืจื˜ื™ื‘ื™, ืจื›ื™ื‘ื™ื, Virtual DOM.

React - ื”ืฆื’ืช ืฆื“ ืœืงื•ื—

ืžื” ื–ื” React ื‘ื ืงื•ื“ื•ืช

  • ืกืคืจื™ื™ืช JavaScript ื—ื–ืงื” ืœึพUI: React ื”ื™ื ืกืคืจื™ื™ื” ืœื‘ื ื™ื™ืช ืžืžืฉืงื™ ืžืฉืชืžืฉ ื“ื™ื ืžื™ื™ื.
  • ืจื›ื™ื‘ื™ื ืœืฉื™ืžื•ืฉ ื—ื•ื–ืจ: ื”ืžืžืฉืง ืžื•ืจื›ื‘ ืžืงื•ืžืคื•ื ื ื˜ื•ืช ืงื˜ื ื•ืช.
  • Meta (Facebook): ื ื•ืฆืจ ื‘ึพ2011 ื•ื ืคืชื— ืœืขื•ืœื ื‘ึพ2013.
  • Server Components: ืžืืคืฉืจื™ื ืœื˜ืขื•ืŸ HTML ืžื”ืฉืจืช ื‘ืฆื•ืจื” ื™ืขื™ืœื”.
  • Virtual DOM: React ืžืฉื•ื•ื” ืžืฆื‘ื™ื ื•ื›ื•ืชื‘ืช ืจืง ืžื” ืฉืฆืจื™ืš.
  • JSX: ืชื—ื‘ื™ืจ ื”ืžืฉืœื‘ HTML ื‘ืชื•ืš JavaScript.
  • Hooks: ืฉื™ืžื•ืฉ ื‘ึพstate, effect, memo ื•ืขื•ื“.
  • Props: ื–ืจื™ืžืช ื ืชื•ื ื™ื ื—ื“ึพื›ื™ื•ื•ื ื™ืช.
  • ืืงื•ึพืกื™ืกื˜ื ืขืฉื™ืจ: ื ื™ืชื•ื‘, ื ื™ื”ื•ืœึพืžืฆื‘, SWR, TanStack, Redux ื•ืขื•ื“.

โš–๏ธ React vs Vanilla JS

Vanilla JS: ื’ื™ืฉื” ืื™ืžืคืจื˜ื™ื‘ื™ืช. React: ื“ืงืœืจื˜ื™ื‘ื™ืช โ€” UI = ืคื•ื ืงืฆื™ื” ืฉืœ state.

React vs Vanilla

๐Ÿ“š ืชื•ื›ื ื™ืช ื”ืœื™ืžื•ื“ ื‘ืงื•ืจืก React

โœจ ืžื‘ื•ื ืœ-JSX

1. ืœื™ืžื•ื“ JSX

JSX ื”ื•ื ืชื—ื‘ื™ืจ ื”ืžืฉืœื‘ HTML ื‘ืชื•ืš JavaScript ื‘ืฆื•ืจื” ืงืจื™ืื” ื•ื‘ื”ื™ืจื”.

ื ืœืžื“ ืื™ืš ื”ื•ื ืขื•ื‘ื“ ื•ื ืจืื” ื“ื•ื’ืžืื•ืช ื‘ืกื™ืกื™ื•ืช ืœืฉื™ืžื•ืฉ ื‘ื•.

๐Ÿ—๏ธ ืืชืจ ืขื JSX โ€” ืžื” ื–ื” ื›ื•ืœืœ

ืืชืจ ื‘ึพReact ืžืชื—ื™ืœ ืžืคื™ืจื•ืง ืœืจื›ื™ื‘ื™ื: Header, Navbar, ื›ืจื˜ื™ืกื™ื, Footerโ€ฆ

ืžืชื—ืช โ€” ืฉืชื™ ื“ื•ื’ืžืื•ืช ืงืฆืจื•ืช: ืฉื™ืœื•ื‘ ื‘ื™ื˜ื•ื™ื™ื ื•ืจื™ื ื“ื•ืจ ืจืฉื™ืžื” ื“ื™ื ืžื™ืช.

ื“ื•ื’ืžื” 1 โ€” JSX ื›ื‘ื™ื˜ื•ื™

ื—ื™ืฉื•ื‘ื™ื ื•ึพclassName ื“ื™ื ืžื™ ื‘ืชื•ืš JSX:

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

ื™ืฉ ืœืš ื”ืจืฉืื•ืช ื ื™ื”ื•ืœ

ื“ื•ื’ืžื” 2 โ€” ืจื™ื ื“ื•ืจ ืจืฉื™ืžื” ืขื map

ื™ืฆื™ืจืช ืจืฉื™ืžื” ื“ื™ื ืžื™ืช + 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 />

ื“ื•ื’ืžื” ืžื•ืจืฆืช ื‘ืคื•ืขืœ:

  • ืžื‘ื•ื ืœ-React
  • JSX ื•ืจื›ื™ื‘ื™ื
  • Hooks ื‘ืกื™ืกื™ื™ื

2. ื‘ื ื™ื™ืช ืืชืจื™ื ืคืฉื•ื˜ื™ื ืขื JSX

ืื—ืจื™ ื”ื”ื™ื›ืจื•ืช ืขื JSX ื ื‘ื ื” ืืชืจื™ื ืงื˜ื ื™ื: ื›ื•ืชืจืช, ืชืคืจื™ื˜, ื›ืคืชื•ืจื™ื, ื•ืชื•ื›ืŸ ื‘ืกื™ืกื™. ื ืœืžื“ ืœื”ืขื‘ื™ืจ ื ืชื•ื ื™ื ื‘ื™ืŸ ืจื›ื™ื‘ื™ื ื‘ืืžืฆืขื•ืช props ื•ืœื‘ื ื•ืช UI ืžืคื•ืจืง ืœืจื›ื™ื‘ื™ื ืงื˜ื ื™ื.

3. ืœื™ืžื•ื“ Hooks

Hooks ื”ื ื”ืœื‘ ืฉืœ React ื”ืžื•ื“ืจื ื™ืช: ื ื™ื”ื•ืœ state, ืžื—ื–ื•ืจ ื—ื™ื™ื, ื•ึพcontext โ€” ื”ื›ื•ืœ ื‘ืงื•ืžืคื•ื ื ื˜ื•ืช ืคื•ื ืงืฆื™ื”.

  • useState โ€” ื ื™ื”ื•ืœ ืžื™ื“ืข ืžืฉืชื ื” ื‘ืจื›ื™ื‘.
  • useEffect โ€” ื”ืคืขืœืช ืงื•ื“ ื‘ืขืช ืฉื™ื ื•ื™ state.
  • useRef โ€” ื’ื™ืฉื” ืœึพDOM ื•ืื—ืกื•ืŸ ืขืจื›ื™ื ื‘ื™ืŸ ืจื™ื ื“ื•ืจื™ื.
  • useMemo / useCallback โ€” ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื‘ื™ืฆื•ืขื™ื.

๐Ÿงฉ ืžื” ื–ื” Hooks (ื‘ืงืฆืจื”)

Hooks ื”ื ืคื•ื ืงืฆื™ื•ืช ืฉืžืชื—ื™ืœื•ืช ื‘ึพuse ื•ืžืืคืฉืจื•ืช ื ื™ื”ื•ืœ state, lifecycle, context ื•ึพref โ€” ื‘ืœื™ ืฆื•ืจืš ื‘ืžื—ืœืงื•ืช.

  • useState โ€“ ื ื™ื”ื•ืœ ืžืฆื‘.
  • useEffect โ€“ ืชื’ื•ื‘ื” ืœืฉื™ื ื•ื™ื™ื.
  • useRef โ€“ ืฉืžื™ืจืช ืขืจื›ื™ื ื•ึพDOM.
  • useReducer โ€“ ื ื™ื”ื•ืœ ืžืฆื‘ื™ื ืžื•ืจื›ื‘ื™ื.
  • useLayoutEffect โ€“ ืืคืงื˜ื™ื ืœืคื ื™ ืฆื™ื•ืจ ืœืžืกืš.

๐ŸŽ“ ื›ืืŸ ืชืžืฆืื• ืืช ื›ืœ ื”ื“ื•ื’ืžืื•ืช ื•ื”ืคืจื•ื™ืงื˜ื™ื ื‘ื›ืœ ื”ืงื˜ื’ื•ืจื™ื•ืช โ€“ ืžื›ืœ ื”ืชื—ื•ืžื™ื ื•ื”ื ื•ืฉืื™ื ืฉื‘ืœื™ืžื•ื“ React.

Portfolio Project Image

JSX ื•ืจื›ื™ื‘ื™ื ืจืืฉื•ื ื™ื

ืžื‘ื•ื ืœึพReact: ืœื•ืžื“ื™ื ื›ื™ืฆื“ ืœื‘ื ื•ืช ืืช ื”ึพUI ื‘ืืžืฆืขื•ืช JSX, ืœื™ืฆื•ืจ ืจื›ื™ื‘ื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื ื•ืœืคืจืง ืืช ื”ืžืžืฉืง ืœื—ืœืงื™ื ืงื˜ื ื™ื. ื”ื‘ื ื” ืฉืœ JSX ื”ื™ื ื”ื‘ืกื™ืก ืœื›ืœ ื‘ื ื™ื™ืช ืืชืจ ื‘ึพReact ื•ืžืืคืฉืจืช ื›ืชื™ื‘ื” ื‘ืจื•ืจื” ื•ื ื•ื—ื”.

Portfolio Project Image

ื ื™ื”ื•ืœ ืžืฆื‘ ื•ืื™ืจื•ืขื™ื

ืฉื™ืžื•ืฉ ื‘ึพuseState ืœื ื™ื”ื•ืœ ื ืชื•ื ื™ื ืžืฉืชื ื™ื ื‘ืชื•ืš ืจื›ื™ื‘, ื•ื˜ื™ืคื•ืœ ื‘ืื™ืจื•ืขื™ื ื›ืžื• onClick ื•ึพonChange. ื”ื ื•ืฉื ื—ืฉื•ื‘ ื›ื™ ื”ื•ื ืžืืคืฉืจ ื™ืฆื™ืจืช ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืžืฉืชืžืฉ ื•ื”ืคื™ื›ืช ื”ื“ืคื™ื ืœื“ื™ื ืžื™ื™ื.

Portfolio Project Image

React Router

ืœื•ืžื“ื™ื ืœื ื•ื•ื˜ ื‘ื™ืŸ ืขืžื•ื“ื™ื ืฉื•ื ื™ื ื‘ึพSPA ื‘ืืžืฆืขื•ืช react-router-dom. ืžื•ืฉื’ื™ื ื›ืžื• Routes, Link ื•ึพuseParams ืžืืคืฉืจื™ื ื‘ื ื™ื™ืช ืืชืจื™ื ืžืจื•ื‘ื™ ืขืžื•ื“ื™ื ื‘ืฆื•ืจื” ืžืงืฆื•ืขื™ืช.

Portfolio Project Image

ื˜ืคืกื™ื ื•ื‘ืงืจื” ืขืœ ืงืœื˜

ื”ื‘ื ื” ืฉืœ controlled components, ืขื‘ื•ื“ื” ืขื ื˜ืคืกื™ื, ืื™ืกื•ืฃ ื ืชื•ื ื™ื ืžื”ืžืฉืชืžืฉ ื•ื‘ื™ืฆื•ืข ื•ืœื™ื“ืฆื™ื” ื‘ืกื™ืกื™ืช. ื ื•ืฉื ื—ื•ื‘ื” ืœื›ืœ ืืชืจ ื”ื›ื•ืœืœ ื”ืจืฉืžื”, ื”ืชื—ื‘ืจื•ืช ืื• ื—ื™ืคื•ืฉ.

Portfolio Project Image

ืฆืจื™ื›ืช API ื•ื”ืฆื’ืช ื ืชื•ื ื™ื

ืฉื™ืžื•ืฉ ื‘ึพfetch ืื• axios ืœืฉืœื™ื—ืช ื‘ืงืฉื•ืช ืœืฉืจืช ื•ื˜ืขื™ื ืช ื ืชื•ื ื™ื ื—ื™ืฆื•ื ื™ื™ื ืœืชื•ืš ื”ืืชืจ. ืื—ื“ ื”ื ื•ืฉืื™ื ื”ืžืจื›ื–ื™ื™ื ื‘ื‘ื ื™ื™ืช ืืคืœื™ืงืฆื™ื•ืช ืžื•ื“ืจื ื™ื•ืช ืฉืžืชืงืฉืจื•ืช ืขื ืžืกื“ื™ ื ืชื•ื ื™ื.

Portfolio Project Image

ื ื™ื”ื•ืœ ืžืฆื‘ ื’ืœื•ื‘ืœื™ ืขื Context

ืฉื™ืชื•ืฃ ืžื™ื“ืข ื‘ื™ืŸ ืจื›ื™ื‘ื™ื ืœืœื ื”ืขื‘ืจืช props ื‘ื›ืœ ืฉืœื‘. ืœื•ืžื“ื™ื ืคืชืจื•ืŸ ืืœื’ื ื˜ื™ ืœืžืฆื‘ื™ื ื‘ื”ื ื ืชื•ื ื™ื ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ื–ืžื™ื ื™ื ืœื›ืœ ื—ืœืงื™ ื”ืืคืœื™ืงืฆื™ื”.

Portfolio Project Image

ืžื•ื ื” ืงืœื™ืงื™ื ืขื useState

ื“ื•ื’ืžื” ืžืฆื•ื™ื ืช ืœื”ื‘ื ืช ื”ืจืขื™ื•ืŸ ืฉืœ state โ€“ ื ืชื•ื ื™ื ืฉืžืฉืชื ื™ื ืœืื•ืจืš ื–ืžืŸ. ืžืืคืฉืจ ืœื”ื‘ื™ืŸ ืืช ื”ืชืคืงื™ื“ ื”ืžืจื›ื–ื™ ืฉืœ useState ื‘ื‘ื ื™ื™ืช ื”ืชื ื”ื’ื•ืช ื“ื™ื ืžื™ืช.

Portfolio Project Image

ื˜ื™ื™ืžืจ ืื•ื˜ื•ืžื˜ื™ ืขื useEffect

ืœื•ืžื“ื™ื ื›ื™ืฆื“ ืœื”ืคืขื™ืœ ืงื•ื“ ื‘ื–ืžืŸ ื˜ืขื™ื ืช ืจื›ื™ื‘ ืื• ื‘ืขืช ืฉื™ื ื•ื™ ืฉืœ ืžืฉืชื ื™ื. ืฉื™ืžื•ืฉื™ ืœื˜ื™ื™ืžืจื™ื, ื‘ืงืฉื•ืช API, ืื™ืจื•ืขื™ ื’ืœื™ืœื”, ื”ืจืฉืžื•ืช ืœืžืื–ื™ื ื™ื ื•ืขื•ื“.

Portfolio Project Image

ืคื•ืงื•ืก ืขืœ ืฉื“ื” ืงืœื˜ ืขื useRef

ืฉื™ืžื•ืฉ ื‘ึพuseRef ืžืืคืฉืจ ื’ื™ืฉื” ื™ืฉื™ืจื” ืœืืœืžื ื˜ื™ื ื‘ึพDOM ื•ืฉืžื™ืจื” ืขืœ ืขืจื›ื™ื ื‘ื™ืŸ ืจื™ื ื“ื•ืจื™ื. ื ืœืžื“ ืื™ืš ืœืชืช ืคื•ืงื•ืก ืœืฉื“ื” ืื• ืœืžื“ื•ื“ ื’ื“ืœื™ื ืฉืœ ืจื›ื™ื‘ื™ื.

Portfolio Project Image

ื ื™ื”ื•ืœ ืขื’ืœืช ืงื ื™ื•ืช ืขื useReducer

ื“ื•ื’ืžื” ืœื ื™ื”ื•ืœ ืœื•ื’ื™ืงื” ืžื•ืจื›ื‘ืช ื“ืจืš reducer. useReducer ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืœืžืฆื‘ื™ื ื‘ื”ื ื™ืฉ ืคืขื•ืœื•ืช ืจื‘ื•ืช ื›ืžื• ื”ื•ืกืคื”, ืžื—ื™ืงื” ื•ืขื“ื›ื•ืŸ ืฉืœ ืคืจื™ื˜ื™ื.

Portfolio Project Image

ืžื ื™ืขืช ื—ื™ืฉื•ื‘ ืžื™ื•ืชืจ ืขื useMemo

ืขืœ ื™ื“ื™ ืœื•ืžื“ื™ื ืœื‘ืฆืข ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื™ ืฉืžื™ืจืช ืชื•ืฆืื•ืช ืฉืœ ื—ื™ืฉื•ื‘ื™ื ื›ื‘ื“ื™ื. ืฉื™ืžื•ืฉื™ ื›ืืฉืจ ืจื•ืฆื™ื ืœืžื ื•ืข ืจื™ื ื“ื•ืจื™ื ืžื™ื•ืชืจื™ื ื•ืœืฉืคืจ ืืช ื‘ื™ืฆื•ืขื™ ื”ืืคืœื™ืงืฆื™ื”.

Portfolio Project Image

ืฉืžื™ืจื” ืขืœ ืคื•ื ืงืฆื™ื” ืงื‘ื•ืขื” ืขื useCallback

ืžื•ื ืข ื™ืฆื™ืจื” ืžื—ื“ืฉ ืฉืœ ืคื•ื ืงืฆื™ื•ืช ื‘ื›ืœ ืจื™ื ื“ื•ืจ. ื—ืฉื•ื‘ ื‘ืžื™ื•ื—ื“ ื›ืฉืžืขื‘ื™ืจื™ื ืคื•ื ืงืฆื™ื•ืช ื›ึพprops ืœืจื›ื™ื‘ื™ื ืื—ืจื™ื ื›ื“ื™ ืœื”ื™ืžื ืข ืžืจื™ื ื“ื•ืจื™ื ืžื™ื•ืชืจื™ื.

Portfolio Project Image

ืžื“ื™ื“ืช ืจื›ื™ื‘ ืœืคื ื™ ืจื™ื ื“ื•ืจ

ืžืฉืžืฉ ืœืžืฆื‘ื™ื ื‘ื”ื ืฆืจื™ืš ืœืžื“ื•ื“ ืื• ืœื—ืฉื‘ ืžืฉื”ื• *ืœืคื ื™* ืฉื”ื“ืฃ ืžืฆื•ื™ืจ ืœืžืกืš. ืฉื™ืžื•ืฉื™ ื‘ืื ื™ืžืฆื™ื•ืช, ืžื™ืงื•ืžื™ื ื•ื“ื™ื ืžื™ืงื” ืฉืœ ืขื™ืฆื•ื‘.

Portfolio Project Image

ืฉื“ื•ืช ื˜ื•ืคืก ืขื useId

ื™ื•ืฆืจ ืžื–ื”ื™ื ื™ื™ื—ื•ื“ื™ื™ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™, ืžื” ืฉืžื‘ื˜ื™ื— ื ื’ื™ืฉื•ืช ืชืงื™ื ื” ื‘ื™ืŸ ืชื•ื•ื™ื•ืช ืœื˜ืคืกื™ื. ื—ืฉื•ื‘ ื‘ื˜ืคืกื™ื ื“ื™ื ืžื™ื™ื ืฉืžื›ื™ืœื™ื ื”ืจื‘ื” ืฉื“ื•ืช.

Portfolio Project Image

ื˜ื•ืคืก ื”ืจืฉืžื” ื—ื›ื ืขื useReducer

useReducer ืžืืคืฉืจ ื ื™ื”ื•ืœ ืžืฆื‘ ืžื•ืจื›ื‘ ื‘ืฆื•ืจื” ืžืกื•ื“ืจืช ื•ืฆืคื•ื™ื”, ื‘ืžื™ื•ื—ื“ ื‘ื˜ืคืกื™ื ืขื ื•ืœื™ื“ืฆื™ื” ื•ืฉื’ื™ืื•ืช. ื”ืœื•ื’ื™ืงื” ืžืจื•ื›ื–ืช ื‘ืคื•ื ืงืฆื™ื™ืช reducer ืื—ืช โ€” ื›ืžื• Redux ืื‘ืœ ืงืœ ื•ืคืฉื•ื˜ ื™ื•ืชืจ ืœืชืคืขื•ืœ.

Portfolio Project Image

ื ื™ื”ื•ืœ ืจืฉื™ืžืช ืื ืฉื™ื ืขื useReducer

ืคืจื•ื™ืงื˜ ืฉืžื“ื’ื™ื ืžืขื‘ืจ ืžึพuseState ืœึพuseReducer: ืžื—ื™ืงื” ืฉืœ ืคืจื™ื˜ื™ื, ืื™ืคื•ืก ื”ืจืฉื™ืžื”, ื ื™ืงื•ื™ ืžืœื, ืฉื™ืžื•ืฉ ื‘ึพactions ื•ึพreducer ื—ื™ืฆื•ื ื™. ืชืจื’ื•ืœ ืžืฆื•ื™ืŸ ืœื”ื‘ื ืช ื–ืจื™ืžืช ืขื‘ื•ื“ื” ืžื•ื“ืจื ื™ืช ื›ืžื• ื‘ึพRedux ืืš ื‘ืจืžื” ืžืงื•ืžื™ืช ืฉืœ ืจื›ื™ื‘.

๐Ÿš€ ืžื” ื ืชืจื’ืœ ืื—ืจื™ ื”-Hooks

ื ื™ื™ืฉื Hooks ื‘ื‘ื ื™ื™ืช ืืชืจื™ื ืฉืœืžื™ื: ื ื™ืชื•ื‘, ื˜ืคืกื™ื, ื˜ืขื™ื ืช ื ืชื•ื ื™ื, Custom Hooks ื•ืขื•ื“.

4. ื‘ื ื™ื™ืช ืคืจื•ื™ืงื˜ื™ื ืขื ืกื•ื’ื™ Hooks

ืชืจื’ื•ืœ: useState ืœืžื•ื ื”, useEffect ืœื˜ืขื™ื ืช API, useRef ืœื’ื™ืฉื” ืœึพDOM, useContext ืœืฉื™ืชื•ืฃ ื ืชื•ื ื™ื.

5. ืืชืจื™ื ืžื•ืจื›ื‘ื™ื ืขื Hooks

ื ื‘ื ื” ื“ืคื™ ืคืจื•ืคื™ืœ, ื˜ืคืกื™ื ืขื ื•ืœื™ื“ืฆื™ื”, Custom Hooks, ื•ืฉื™ืชื•ืฃ ืœื•ื’ื™ืงื” ื‘ื™ืŸ ืจื›ื™ื‘ื™ื.

6. ื ื•ืฉืื™ื ืžืชืงื“ืžื™ื

  • Routing โ€“ ื ื™ื•ื•ื˜ ื‘ื™ืŸ ื“ืคื™ื.
  • ื ื™ื”ื•ืœ ืžืฆื‘: Context / Redux / Zustand.
  • ื˜ืขื™ื ืช ื ืชื•ื ื™ื: fetch, SWR, TanStack Query.
  • react-hook-form โ€“ ื˜ืคืกื™ื ื•ื•ืœื™ื“ืฆื™ื”.
  • ืื•ืคื˜ื™ืžื™ื–ืฆื™ื”: useMemo, memo, Lazy loading.
  • ื ื’ื™ืฉื•ืช, ื‘ื“ื™ืงื•ืช, SEO ื‘ึพNext.js ื•ืขื•ื“.