ã2026幎çãReactã®å§ãæ¹ â ç°å¢æ§ç¯ããæåã®ã³ã³ããŒãã³ããŸã§å®å šã¬ã€ã
- Viteã䜿ã£ãReactç°å¢ã®æ§ç¯
- ã³ã³ããŒãã³ããšJSXã®æžãæ¹
- useStateã»useEffect ã®åºæ¬
- propsã§ã®èŠªåã³ã³ããŒãã³ãéã®ããŒã¿æž¡ã
ã»ããã¢ããæé
# Viteã䜿ã£ãReactãããžã§ã¯ãäœæïŒæšå¥šïŒ
npm create vite@latest my-app -- --template react-ts
cd my-app
npm install
npm run dev
ã³ã³ããŒãã³ãã®åºæ¬
// src/components/Greeting.tsx
interface GreetingProps {
name: string;
}
export function Greeting({ name }: GreetingProps) {
return <h1>ããã«ã¡ã¯ã{name}ããïŒ</h1>;
}
// Hooksã®äœ¿ãæ¹
import { useState, useEffect } from 'react';
function Counter() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `ã«ãŠã³ã: ${count}`;
}, [count]);
return (
<button onClick={() => setCount(count + 1)}>
ã¯ãªãã¯åæ°: {count}
</button>
);
}
ããããè©°ãŸããã€ã³ã
Q: JSXã§ class ã䜿ããªã
â JSXã§ã¯ class ã®ä»£ããã« className ã䜿ããŸããHTMLãšã®éãã§æåã¯æžæããã¡ã§ãã
Q: useEffect ã®äŸåé
åã空ã«ãããšèŠåãåºã
â ESLintã®ã«ãŒã«ã§ãuseEffect å
ã§äœ¿ã£ãŠãã倿°ã¯äŸåé
åã«å«ããããšãæšå¥šãããŠããŸãããŸãã¯èŠåã®å
容ãèªãã§ãèšããã倿°ãé
åã«è¿œå ããŠã¿ãŸãããã
Q: ã³ã³ããŒãã³ããåã¬ã³ããªã³ã°ããããã
â useState ã®æŽæ°é¢æ°ãåŒã¶ãã³ã«åã¬ã³ããªã³ã°ãèµ·ããŸããããã©ãŒãã³ã¹ãæ°ã«ãªãå Žå㯠useMemo ã useCallback ãåŠç¿ããŸãããã
ããã³ããšã³ããå匷ããããšãããšå¿ ããReactããåºãŠãããã ãã©ããªãã§Reactã£ãŠå¿ èŠãªã®ïŒHTMLãšJavaScriptã ããããã¡ãªã®ïŒ
HTMLãšJavaScriptã ãã§ãäœãããã©ãããŒãžã®å 容ãåçã«å€ããã¢ããªãäœããšãã©ãã§äœã倿Žãããèªåã§è¿œãç¶ããªãããããªããŠãããè€éã«ãªããã ãReactã¯ãç»é¢ã®ç¶æ ãå€ãã£ããèªåçã«è¡šç€ºãæŽæ°ããããšããä»çµã¿ãæã£ãŠããŠããã¿ã³ãæŒãããæ°åãå¢ãããšããäžèЧãåãæ¿ãããšããããããåããå§åçã«æ¥œã«äœãããã ããæ±äººåžå Žã§ãå§åçã«éèŠãé«ããããããã³ããšã³ãéçºãåŠã¶äžã§ã®æåã®é¢éã ãã
ãªãã»ã©ãåãWebã¢ããªãäœãã®ã«åããŠããã ããå§ããã«ã¯ãŸãäœãããã°ããã®ïŒ
ãŸãNode.jsãã€ã³ã¹ããŒã«ããŠãã¿ãŒããã«ããViteãšãããã«ãããŒã«ã§ãããžã§ã¯ããäœæããã®ãããããã ãã以åã¯Create React AppïŒCRAïŒãå®çªã ã£ããã©ã2026幎çŸåšã¯Viteã®ã»ããé«éã§äž»æµã«ãªã£ãŠãããã ãã³ãã³ãäžçºã§ãã³ãã¬ãŒããçæãããŠãããã«éçºãå§ããããããã®ããŒãžã§ã¯ãç°å¢æ§ç¯âã³ã³ããŒãã³ãã®äœãæ¹âããŒã¿ã®æ±ãæ¹ããŸã§é çªã«èª¬æãããããåããŠã§ãè¿·ããé²ãããã
ãããžã§ã¯ããäœã£ããããŸãäœããèŠããã°ããã®ïŒ
æåã«èŠããã®ã¯JSXã ããJSXã¯JavaScriptã®äžã«HTMLã®ãããªã¿ã°ãæžããèšæ³ã§ãReactã®åºæ¬äžã®åºæ¬ãªãã ãããšãã°ãèŠåºãã¿ã°ã®äžã«å€æ°ã®å€ã衚瀺ãããã¿ãããªããšãçŽæçã«æžããããèŠãç®ã¯HTMLãã£ããã ãããHTMLãç¥ã£ãŠããã°ãã銎æããã¯ãã ãã
ã³ã³ããŒãã³ãã£ãŠããã®ã¯å ·äœçã«ã©ãäœãã®ïŒ
ä»ã®Reactã§ã¯ã颿°ã³ã³ããŒãã³ãããæšæºã ããJavaScriptã®é¢æ°ãå®çŸ©ããŠããã®äžã§JSXãè¿ãã ãã§ã³ã³ããŒãã³ãã«ãªããã ãããšãã°Headerã³ã³ããŒãã³ããCardã³ã³ããŒãã³ãã¿ããã«åœ¹å²ããšã«åããŠäœã£ãŠãAppãšãã芪ã³ã³ããŒãã³ãããåŒã³åºããŠçµã¿åãããã€ã¡ãŒãžã ãã
ã³ã³ããŒãã³ãå士ã§ããŒã¿ãæž¡ããããšãã¯ã©ãããã®ïŒ
ãpropsïŒããããã¹ïŒããšããä»çµã¿ã䜿ããã芪ã³ã³ããŒãã³ãããåã³ã³ããŒãã³ãã«ããŒã¿ã屿§ã®ããã«æž¡ãããã ãããšãã°Cardã³ã³ããŒãã³ãã«ã¿ã€ãã«ã説ææãpropsãšããŠæž¡ãã°ãåãCardã§ã衚瀺å 容ãå€ããããããã³ãã¬ãŒãã«å·®ã蟌ãããŒã¿ãå€ããæå®ããæãã ãã
ãã¿ã³ãæŒãããæ°åãå¢ããã¿ãããªåãã¯ã©ãäœãã®ïŒ
ããã«ã¯useStateããã¯ã䜿ãããuseStateã¯ã³ã³ããŒãã³ãã®äžã§ãç¶æ ãã管çããããã®ä»çµã¿ã§ãå€ãšãã®å€ãæŽæ°ãã颿°ãã»ããã§æã«å ¥ããã ããã¿ã³ãã¯ãªãã¯ãããæŽæ°é¢æ°ãåŒã¶ã ãã§ãReactãèªåçã«ç»é¢ãåæç»ããŠãããããããReactã®åŒ·ã¿ã§ããã宣èšçUIãã®èãæ¹ã ãã
useEffectã£ãŠããã®ãèŠããããã©ãããã¯äœã«äœ¿ãã®ïŒ
useEffectã¯ãå¯äœçšããæ±ãããã®ããã¯ã ããã³ã³ããŒãã³ããç»é¢ã«è¡šç€ºãããã¿ã€ãã³ã°ã§APIããããŒã¿ãååŸããããã¿ã€ããŒãã»ããããããããšãã«äœ¿ããã ããç»é¢ã®æç»ãšã¯çŽæ¥é¢ä¿ãªããã©ãè£ã§å®è¡ãããåŠçããuseEffectã«æžããšèŠããŠããã°ãããã
ãããžã§ã¯ãã®ãã©ã«ãæ§æã£ãŠã©ããªã£ãŠããã®ïŒ
Viteã§äœã£ãReactãããžã§ã¯ãã ãšãsrcãã©ã«ãã®äžã«ã³ã³ããŒãã³ãã眮ãã®ãåºæ¬ã ãããããããã¿ãŒã³ã¯srcã®äžã«componentsãã©ã«ããäœã£ãŠã³ã³ããŒãã³ããå ¥ããpagesãã©ã«ãã§ããŒãžåäœã®ã³ã³ããŒãã³ãã管çãã圢ã ããå°ãããã¡ã¯ã·ã³ãã«ã«ã倧ãããªã£ããæ©èœããšã«ãã©ã«ããåããæ¹éã§å€§äžå€«ã ãã
åºç€ãããã£ããæ¬¡ã¯äœãåŠã¶ãšããã®ïŒ
å®éã®ã¢ããªéçºã«é²ããªãNext.jsãããããã ããNext.jsã¯ReactãããŒã¹ã«ãããã¬ãŒã ã¯ãŒã¯ã§ãã«ãŒãã£ã³ã°ããµãŒããŒãµã€ãã¬ã³ããªã³ã°ãæåããçµã¿èŸŒãŸããŠãããã ãReactå ¬åŒããã¥ã¡ã³ãã§ãæ¬æ Œçãªã¢ããªã«ã¯ãã¬ãŒã ã¯ãŒã¯ã®å©çšãæšå¥šããŠãããã
æè¿ããèãReact Server Componentsã£ãŠäœãªã®ïŒ
React Server ComponentsïŒRSCïŒã¯ãã³ã³ããŒãã³ãããµãŒããŒåŽã§å®è¡ããŠHTMLãšããŠéãä»çµã¿ã ããåŸæ¥ã¯ãã¹ãŠãã©ãŠã¶åŽã§åãããŠãããã©ãRSCã䜿ããšããŒã¿ååŸããµãŒããŒã§å®çµãããããããããã©ãŠã¶ã«éãJavaScriptã®éãæžã£ãŠããŒãžãéããªããã ãNext.jsã®App Routerã§ã¯ããã©ã«ãã§æ¡çšãããŠããŠã2026幎çŸåšã®Reactéçºã§ã¯ç¥ã£ãŠããã¹ãæŠå¿µã ãã
ç¶æ 管çãšãã«ãŒãã£ã³ã°ãšããReactåšèŸºã®ããŒã«ãå€ããŠè¿·ããããªãã ãã©âŠ
ãšã³ã·ã¹ãã ãåºãã®ã¯Reactã®ç¹åŸŽã§ãããããç¶æ 管çã¯ãŸãuseStateãšuseContextã§å§ããŠãèŠæš¡ã倧ãããªã£ããZustandãJotaiãæ€èšãããšããããã«ãŒãã£ã³ã°ã¯åäœãªãReact Routerããã¬ãŒã ã¯ãŒã¯ãªãNext.jsã«å èµã®ãã®ã䜿ããæåããå šéšèŠããããšãããå¿ èŠã«ãªã£ãã¿ã€ãã³ã°ã§å°å ¥ããã®ãã³ãã ãã
ãŸãäœãäœã£ãŠã¿ãããã ãã©ãããããã®ç·Žç¿ãããžã§ã¯ãã¯ããã®ïŒ
å®çªã¯Todoã¢ããªã ãã©ãããŒããã©ãªãªãµã€ããäœãã®ãããããã ããèªå·±ç޹ä»ãã¹ãã«äžèЧãäœåã®ã£ã©ãªãŒãããããã³ã³ããŒãã³ãã§äœãã°ãpropsã»useStateã»useEffectãäžéãå®è·µã§ããã宿ããããã®ãŸãŸå°±è·æŽ»åãæ¡ä»¶ç²åŸã«ã䜿ããããäžç³äºé³¥ã ãã