åå©çšå¯èœã§æè»ããã€ä¿å®æ§ã®é«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®ãReactã®è€åã³ã³ããŒãã³ããã¿ãŒã³ãæ¢æ±ããŸãããã¹ããã©ã¯ãã£ã¹ãšå®éã®äŸãåŠã³ãŸãããã
Reactã³ã³ããŒãã³ãæ§æïŒè€åã³ã³ããŒãã³ããã¿ãŒã³ã®ç¿åŸ
Reactéçºã®äžçã§ã¯ãã³ã³ããŒãã³ãæ§æã¯ãéçºè ãããå°ããåå©çšå¯èœãªæ§æèŠçŽ ããè€éãªUIãäœæã§ããããã«ããåºæ¬çãªæŠå¿µã§ããããŸããŸãªæ§ææè¡ã®äžã§ããè€åã³ã³ããŒãã³ãã¯ãéåžžã«æè»ã§çŽæçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®åŒ·åãªãã¿ãŒã³ãšããŠéç«ã£ãŠããŸãããã®èšäºã§ã¯ãè€åã³ã³ããŒãã³ããã¿ãŒã³ãæ·±ãæãäžãããã®å©ç¹ãå®è£ ãããã³å®éã®ã¢ããªã±ãŒã·ã§ã³ã«é¢ããå æ¬çãªçè§£ãæäŸããŸãã
è€åã³ã³ããŒãã³ããšã¯
è€åã³ã³ããŒãã³ãã¯ã芪ã³ã³ããŒãã³ããæé»çã«ãã®åãšç¶æ ãšåäœãå ±æããèšèšãã¿ãŒã³ã§ããè€æ°ã®ã¬ãã«ã§å°éå ·ãæç€ºçã«æž¡ãã®ã§ã¯ãªãã芪ã³ã³ããŒãã³ãã¯ã³ã¢ããžãã¯ã管çããåãããåãããããã®ã¡ãœãããŸãã¯ã³ã³ããã¹ããå ¬éããŸãããã®ã¢ãããŒãã¯ãã³ã³ããŒãã³ãã䜿çšããéçºè ã«ãšã£ãŠããŸãšãŸããããçŽæçãªAPIãä¿é²ããŸãã
åéšåãç¬èªã®ç¹å®ã®æ©èœãæã£ãŠããã«ãããããããã·ãŒã ã¬ã¹ã«é£æºããäžé£ã®çžäºæ¥ç¶ãããããŒãã®ãããªãã®ã ãšèããŠãã ããããããã®ã³ã³ããŒãã³ãã®ãååçãªãæ§è³ªããè€åã³ã³ããŒãã³ããå®çŸ©ãããã®ã§ãã
è€åã³ã³ããŒãã³ãã䜿çšããå©ç¹
- åå©çšæ§ã®åäžïŒè€åã³ã³ããŒãã³ãã¯ãå€§å¹ ãªå€æŽãªãã«ãã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåã§ç°¡åã«åå©çšã§ããŸãã
- æè»æ§ã®åäžïŒèŠªã³ã³ããŒãã³ãã¯ãåã³ã³ããŒãã³ãããã®åäœãšå€èгãã«ã¹ã¿ãã€ãºã§ããæè»ãªAPIãæäŸããŸãã
- APIã®ç°¡çŽ åïŒã³ã³ããŒãã³ãã䜿çšããéçºè ã¯ãè€éãªå°éå ·ã®ããªã«ã管çããã®ã§ã¯ãªããåäžã®æç¢ºã«å®çŸ©ãããAPIãšå¯Ÿè©±ããŸãã
- å®åå¥ã®åæžïŒç¶æ ãšåäœãæé»çã«å ±æããããšã«ãããè€åã³ã³ããŒãã³ãã¯ãäžè¬çãªUIãã¿ãŒã³ãå®è£ ããããã«å¿ èŠãªå®åå¥ã³ãŒãã®éãæå°éã«æããŸãã
- ä¿å®æ§ã®åäžïŒèŠªã³ã³ããŒãã³ãã®éäžåãããããžãã¯ã«ãããã³ã³ããŒãã³ãã®æ©èœãä¿å®ããã³æŽæ°ããããšã容æã«ãªããŸãã
ã³ã¢ã³ã³ã»ããã®çè§£
å®è£ ã®è©³çްã«å ¥ãåã«ãè€åã³ã³ããŒãã³ããã¿ãŒã³ãæ¯ããã³ã¢ã³ã³ã»ãããæç¢ºã«ããŸãããã
- æé»çãªç¶æ ã®å ±æïŒèŠªã³ã³ããŒãã³ãã¯å ±æç¶æ ã管çããåã³ã³ããŒãã³ãã¯å€ãã®å Žåãã³ã³ããã¹ããä»ããŠæé»çã«ããã«ã¢ã¯ã»ã¹ããŸãã
- å¶åŸ¡ãããã³ã³ããŒãã³ãïŒåã³ã³ããŒãã³ãã¯ãå€ãã®å Žåã芪ãæäŸããå ±æç¶æ ãšé¢æ°ã«åºã¥ããŠãç¬èªã®ã¬ã³ããªã³ã°ãå¶åŸ¡ããŸãã
- Context APIïŒReactã®Context APIã¯ãæé»çãªç¶æ ã®å ±æãšã芪ã³ã³ããŒãã³ããšåã³ã³ããŒãã³ãéã®éä¿¡ã容æã«ããããã«é »ç¹ã«äœ¿çšãããŸãã
è€åã³ã³ããŒãã³ãã®å®è£ ïŒå®è·µçãªäŸ
è€åã³ã³ããŒãã³ããã¿ãŒã³ãå®è·µçãªäŸã§èª¬æããŸããããã·ã³ãã«ãªAccordionã³ã³ããŒãã³ãã§ããAccordionã³ã³ããŒãã³ãã¯ã芪ã³ã³ããŒãã³ãïŒAccordionïŒãš2ã€ã®åã³ã³ããŒãã³ãïŒAccordionItemããã³AccordionContentïŒã§æ§æãããŸããAccordionã³ã³ããŒãã³ãã¯ãçŸåšéããŠããã¢ã€ãã ã®ç¶æ
ã管çããŸãã
1. Accordionã³ã³ããŒãã³ãïŒèŠªïŒ
```javascript import React, { createContext, useState, useContext, ReactNode } from 'react'; interface AccordionContextType { openItem: string | null; toggleItem: (itemId: string) => void; } const AccordionContext = createContextãã®ã³ãŒãã§ã¯ã
createContextã䜿çšããŠãå ±æç¶æ ã管çããAccordionContextãäœæããŸããAccordionã³ã³ããŒãã³ãã¯èŠªã§ãããopenItemç¶æ ãštoggleItem颿°ã管çããŸããAccordionContext.Providerã¯ãAccordionå ã®ãã¹ãŠã®åã³ã³ããŒãã³ãã§ç¶æ ãšé¢æ°ã䜿çšã§ããããã«ããŸãã
2. AccordionItemã³ã³ããŒãã³ãïŒåïŒ
```javascript import React, { useContext, ReactNode } from 'react'; import { AccordionContext } from './Accordion'; interface AccordionItemProps { itemId: string; title: string; children: ReactNode; } const AccordionItem: React.FCãã®ã³ãŒãã§ã¯ã
AccordionItemã³ã³ããŒãã³ãã¯ãuseContextã䜿çšããŠAccordionContextãæ¶è²»ããŸããitemIdãštitleãå°éå ·ãšããŠåãåããŸãã- ã³ã³ããã¹ãããã®
openItemç¶æ ã«åºã¥ããŠãã¢ã€ãã ãéããŠãããã©ããã倿ããŸãã - ããããŒãã¯ãªãã¯ããããšãã³ã³ããã¹ããã
toggleItem颿°ãåŒã³åºããŠãã¢ã€ãã ã®ééç¶æ ãåãæ¿ããŸãã
3. 䜿çšäŸ
```javascript import React from 'react'; import Accordion from './Accordion'; import AccordionItem from './AccordionItem'; const App: React.FC = () => { return (ã»ã¯ã·ã§ã³ 1 ã®å 容ã
ã»ã¯ã·ã§ã³ 2 ã®å 容ã
ã»ã¯ã·ã§ã³ 3 ã®å 容ã
ãã®äŸã¯ãAccordionã³ã³ããŒãã³ããšAccordionItemã³ã³ããŒãã³ããã©ã®ããã«äžç·ã«äœ¿çšããããã瀺ããŠããŸããAccordionã³ã³ããŒãã³ãã¯ã³ã³ããã¹ããæäŸããAccordionItemã³ã³ããŒãã³ãã¯ãããæ¶è²»ããŠãééç¶æ
ã管çããŸãã
é«åºŠãªè€åã³ã³ããŒãã³ããã¿ãŒã³
åºæ¬çãªäŸãè¶ ããŠãè€åã³ã³ããŒãã³ãã¯ãããé«åºŠãªæè¡ã§ããã«åŒ·åã§ããŸãã
1. ã«ã¹ã¿ã ã¬ã³ããªã³ã°å°éå ·
ã¬ã³ããªã³ã°å°éå ·ã䜿çšãããšãã«ã¹ã¿ã ã¬ã³ããªã³ã°ããžãã¯ãåã³ã³ããŒãã³ãã«æ³šå ¥ã§ããŸããããã«ãããããã«åªããæè»æ§ãšã«ã¹ã¿ãã€ãºãªãã·ã§ã³ãæäŸãããŸãã
äŸïŒ
```javascriptã»ã¯ã·ã§ã³ 1 ã®å 容ã{isOpen ? 'éããŠãã' : 'éããŠãã'}
)}ãã®äŸã§ã¯ãAccordion.Itemã³ã³ããŒãã³ãã¯isOpenç¶æ
ãã¬ã³ããªã³ã°å°éå
·ã«æäŸãããŠãŒã¶ãŒãã¢ã€ãã ã®ééç¶æ
ã«åºã¥ããŠã³ã³ãã³ããã«ã¹ã¿ãã€ãºã§ããããã«ããŸãã
2. ã³ã³ãããŒã«å°éå ·
ã³ã³ãããŒã«å°éå ·ã䜿çšãããšããŠãŒã¶ãŒã¯ã³ã³ããŒãã³ãã®ç¶æ ãå€éšããæç€ºçã«å¶åŸ¡ã§ããŸããããã¯ãã³ã³ããŒãã³ãã®ç¶æ ãã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåãšåæãããå¿ èŠãããã·ããªãªã§åœ¹ç«ã¡ãŸãã
äŸïŒ
```javascriptãã®äŸã§ã¯ãopenItemå°éå
·ã䜿çšããŠãæåã«éããŠããã¢ã€ãã ãæç€ºçã«èšå®ããŸããæ¬¡ã«ãAccordionã³ã³ããŒãã³ãã¯ãã®å°éå
·ãå°éãã芪ãã³ã³ãããŒã«å°éå
·ãæŽæ°ã§ããããã«ãå
éšç¶æ
ã倿Žããããšãã®ã³ãŒã«ããã¯ãæäŸããå¯èœæ§ããããŸãã
3. è€éãªç¶æ
管çã«useReducerã䜿çšãã
芪ã³ã³ããŒãã³ãå
ã§ããè€éãªç¶æ
管çãè¡ãã«ã¯ãuseReducerããã¯ã®äœ¿çšãæ€èšããŠãã ãããããã¯ãç¶æ
ããžãã¯ãæŽçããããäºæž¬å¯èœã«ããã®ã«åœ¹ç«ã¡ãŸãã
è€åã³ã³ããŒãã³ãã®å®éã®äŸ
è€åã³ã³ããŒãã³ãã¯ãããŸããŸãªUIã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã§åºã䜿çšãããŠããŸããäžè¬çãªäŸã次ã«ç€ºããŸãã
- ã¿ãïŒ
Tabããã³TabPanelåã³ã³ããŒãã³ããæã€Tabsã³ã³ããŒãã³ãã - éžæïŒ
Optionåã³ã³ããŒãã³ããæã€Selectã³ã³ããŒãã³ãã - ã¢ãŒãã«ïŒ
ModalHeaderãModalBodyãããã³ModalFooteråã³ã³ããŒãã³ããæã€Modalã³ã³ããŒãã³ãã - ã¡ãã¥ãŒïŒ
MenuItemåã³ã³ããŒãã³ããæã€Menuã³ã³ããŒãã³ãã
ãããã®äŸã¯ãè€åã³ã³ããŒãã³ãã䜿çšããŠãçŽæçã§æè»ãªUIèŠçŽ ãäœæããæ¹æ³ã瀺ããŠããŸãã
è€åã³ã³ããŒãã³ãã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
è€åã³ã³ããŒãã³ããã¿ãŒã³ã广çã«æŽ»çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
- APIãã·ã³ãã«ã«ä¿ã€ïŒã³ã³ããŒãã³ãã䜿çšããéçºè åãã«ãæç¢ºã§çŽæçãªAPIãèšèšããŸãã
- ååãªæè»æ§ãæäŸããïŒã¬ã³ããªã³ã°å°éå ·ãã³ã³ãããŒã«å°éå ·ããŸãã¯ãã®ä»ã®æè¡ãéããŠãã«ã¹ã¿ãã€ãºãªãã·ã§ã³ãæäŸããŸãã
- APIã培åºçã«ææžåããïŒã³ã³ããŒãã³ãã广çã«äœ¿çšããæ¹æ³ã«ã€ããŠãéçºè ãã¬ã€ãããããã®å æ¬çãªããã¥ã¡ã³ããæäŸããŸãã
- 培åºçã«ãã¹ãããïŒã³ã³ããŒãã³ãã®æ©èœãšå ç¢æ§ã確ä¿ããããã«ã培åºçãªãã¹ããäœæããŸãã
- ã¢ã¯ã»ã·ããªãã£ãèæ
®ããïŒã³ã³ããŒãã³ãã身äœé害ã®ãããŠãŒã¶ãŒã§ãã¢ã¯ã»ã¹ã§ããããã«ããŸããã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ã«åŸããARIA屿§ãé©åã«äœ¿çšããŸããããšãã°ã
Accordionã®äŸã§ã¯ãåã¢ã€ãã ã®å±é/æãããã¿ç¶æ ãã¹ã¯ãªãŒã³ãªãŒããŒã«ã¢ããŠã³ã¹ããããã«ãARIA屿§ãé©åã«ç®¡çããŠããããšã確èªããŸãã
äžè¬çãªèœãšã穎ãšãã®åé¿æ¹æ³
- APIãé床ã«è€éã«ããïŒAPIãæ··ä¹±ããã䜿çšãé£ããããå¯èœæ§ã®ããã«ã¹ã¿ãã€ãºãªãã·ã§ã³ã远å ããããªãããã«ããŸãã
- 坿¥ãªçµåïŒåã³ã³ããŒãã³ãã芪ã³ã³ããŒãã³ãã«å¯æ¥ã«çµåããããªãããã«ããŸããããã¯ãåå©çšæ§ãå¶éããå¯èœæ§ããããŸãã
- ã¢ã¯ã»ã·ããªãã£ã®ç¡èŠïŒã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé ãç¡èŠãããšã身äœé害ã®ãããŠãŒã¶ãŒãã³ã³ããŒãã³ãã䜿çšã§ããªããªãå¯èœæ§ããããŸãã
- é©åãªããã¥ã¡ã³ããæäŸããªãïŒäžååãªããã¥ã¡ã³ãã§ã¯ãéçºè ãã³ã³ããŒãã³ãã®äœ¿ç𿹿³ãçè§£ããããšãå°é£ã«ãªãå¯èœæ§ããããŸãã
çµè«
è€åã³ã³ããŒãã³ãã¯ãReactã§åå©çšå¯èœã§æè»ããã€ä¿å®æ§ã®é«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®åŒ·åãªããŒã«ã§ããã³ã¢ã³ã³ã»ãããçè§£ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ããã®ãã¿ãŒã³ã广çã«æŽ»çšããŠãçŽæçã§äœ¿ããããã³ã³ããŒãã³ããäœæã§ããŸããã³ã³ããŒãã³ãæ§æã®åãåãå ¥ããReactéçºã¹ãã«ãé«ããŠãã ããã
èšèšäžã®éžæãã°ããŒãã«ã«åãŒã圱é¿ãèæ ®ããããšãå¿ããªãã§ãã ãããæç¢ºã§ç°¡æœãªèšèã䜿çšããååãªããã¥ã¡ã³ããæäŸããããŸããŸãªããã¯ã°ã©ãŠã³ããæåãæã€ãŠãŒã¶ãŒãã³ã³ããŒãã³ãã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã