๐React - ืืืจืื
ืืืืื ืฉืื ืืืจ ืฉืื ืขื ื ืืืื ืฆื ืืคืจืงืื ื ืคืจืืื.
๐ Multiple Returns (React)
ืื ืื โMultiple Returnsโ ืืืื ืื ืืื?
โMultiple Returnsโ ืืื ืืคืืก ืจืื ืืืจ ืฉืื ืืืืืจืื ืืืงืื (Early Return) UI ืฉืื ื ืืืชืื ืืืฆื ืื ืืืื ืฉื ืืงืืืคืื ื ืื: ืืขืื ื, ืฉืืืื, ืืื ื ืชืื ืื, ืืฆืืื ืืื ืืืื. ืืืงืื ืืจืื ืจืืื ืขืืืงืื ืึพif / else ืืงืื ื ืื, ืืืืงืื ืืฆืืื ืืคื ืกืืจ ืขืืืคืืืืช ืืืืืืจืื ืืช ืึพUI ืืืชืืื ืืฉืืจืืช ืงืฆืจืืช ืืืจืืจืืช.
ืืชืจืื ืืช ืืจืืืืื
- ืงืจืืืืช ืืขืืื: ืื ืืฆื ืืืคืจื ืืืืืง ืงืื ืฉืงื ืืืืื ืืืชืืืง.
- ืืงืจื ืขื ืืืจืืื: ืขืืฆืจืื ืืืงืื ืืืฆืื ืืื ืืื/ืืจืืืื ืืื โืกืืืืืโ ืืืืืงื ืืืืชืจืช.
- ืืคืจืืช ืืืจืืืช: ื ืืชื ืืืืฆืื ืื ืืฆื ืืงืืืคืื ื ืื ืงืื ื (Loader, Error, Empty).
- ืืชืืื ืืืขืืช ืึพdata fetching: ืืืืืื ืขื ืกืคืจืืืช ืืื React Query ืื Fetch ืจืืื.
ืืชื ืืืฉืชืืฉ?
- ืืขืื ื/ืฉืืืื/ืจืืง/ืืฆืืื ืืขืช ืืืืช ื ืชืื ืื.
- ืฉืขืจื ืืืฉื (Auth): ืื ืืืืืจ โ ืืืืจ ืืกื ืืชืืืจืืช, ืืืจืช ืืืฉื.
- Feature Flags: ืื ืคืืฆืณืจ ืืืื โ ืืืืจ ืืจืกื ืืฉื ื, ืื ืืืืง โ ืืืืฉื.
- ืืืืืฆืื ืฉื ืคืจืืืจืื/ื ืชืืืื: ืคืจืืืจ ืืกืจ/ืฉืืืจ โ ืืืืขื ืืชืืืื.
ืืืงื ืืื
- ืืืงื Hooks: ืื ืึพhooks ืืืืืื ืืืืงืจื ืชืืื ืืืืืชื ืกืืจ. ืื ืชืืืืจื ืืคื ื ืฉืงืจืืชื ืืืืงืื ืืืจืืฉืื ืืจื ืืจ ืืื.
- ืกืืจ ืืืืงืืช ืืืืืฅ:
Loading โ Error โ Empty โ Success
. - ืฆืืฆืื ืฉืืคืื UI: ืื ืืื ืืฆืืื ืืฉืชืคืื ืืื ื ืืืื, ืืคืืงื ืจืืืื ืืฉื ื (Loader, ErrorMsg, Empty).
- ื ืืืฉืืช/UX: ืืืฆืื ืืขืื ื ืืจืืืื ืฉืงืื Skeleton; ืืืฆืื ืฉืืืื ืกืคืงื ืคืขืืื ืืชืืงืื (ืืื โืืขื ืฉืืโ).
ืืฉืืืื ืงืฆืจื
Multiple Returns (ืืืืืฅ):
if (isLoading) return <Loader/>; if (error) return <ErrorMsg/>; if (!data) return <Empty/>; return <List data={data}/>;
ืืจืื ืจืืื ืืงืื ื ืื (ืงืฉื ืืงืจืื):
return isLoading ? <Loader/> : error ? <ErrorMsg/> : !data ? <Empty/> : <List data={data}/>;
ืืขืจืืช ืึพNext.js
- Server Components: ืืื hooks ืฉื ืืงืื, ืืื ืขืืืื ืืคืฉืจ โืืืืืืจ ืืืงืืโ (ืื ืืืฉืชืืฉ ืึพ
notFound()
/redirect()
). - Suspense/Streaming: ืื ืืชื ืืฉืชืืฉืื ืึพ
<Suspense>
ืืืขืื ื, ืึพfallback ืืืคื ืึพLoading, ืืขืืืื ืชืืืื ืืืืืืจ ืืืงืื ืึพError/Empty ืืคื ืฆืืจื.
1) ืืืืื ืืกืืกืืช (Interactive)
ืืืืืคื ืืฆื ืืขืืจืช ืืืคืชืืจืื ืืชืจืื ืฉืืงืืืคืื ื ืื ืืืืืจื ืืืงืื ืืช ื-UI ืืืชืืื.
ืืืจ/ื ืืฆื ืืจืื ืืืจ
2) ืืืืื ืืืึพืืืืชืืช (ืกืืืืืฆืืืช fetch)
ืืืืื ืืงืฉืช ืจืฉืช: ืชืืืื ืืขืื ื, ืืืดื ืฉืืืื ืื ื ืชืื ืื. ืฉืืื ืื ืื ืืงืื ื-setTimeout
ืืื ืืื ืืข ืขืืืื state ืืืจื ืคืืจืืง ืืงืืืคืื ื ืื.
๐ญ ืืื ื ืชืื ืื
ืืืคืื ืืื ืื ืืขืฉืืช
- ืืืงื Hooks: ืื ืชืืฆืขื
return
ืืคื ื ืงืจืืืืช ื-hooks ืฉืืืืจืืช ืืืืงืจื ืืื ืจื ืืจ. - ืกืืจ ืืืืงืืช ืืืืืฅ:
Loading โ Error โ Empty โ Success
. - ืื ืืื ืื ืืืฆืื, ืืคืฉืจ
return null;
(UI ืจืืง). - ืืขืืืคื ืืืืจืืช ืืืงืืืืช ืขื ืคื ื ืืจืื ืจืืื ืืงืื ื ืื ืืจืืืื โ ืงืจืื ืืชืืืงืชื ืืืชืจ.