Reactã®å®éšçãª`experimental_use` Hookãš`<Scope>`ã³ã³ããŒãã³ãã®è©³çްãªã¬ã€ããã¹ã³ãŒã管çãã³ã³ããã¹ãã®åé¢ãå ç¢ãªReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®é«åºŠãªç¶æ 管çãã¯ããã¯ã«é¢ããæŽå¯ãæäŸããŸãã
Reactã®`experimental_use`ãš``: è€éãªã¢ããªã±ãŒã·ã§ã³ã®ããã®ã¹ã³ãŒã管çã®ãã¹ã¿ãŒ
Reactã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®äººæ°ã®ããJavaScriptã©ã€ãã©ãªã§ãããåžžã«é²åããŠããŸããç¶ç¶çãªæ¢æ±ã®1ã€ã®é åã¯ã¹ã³ãŒã管çã§ããããã¯ãã³ã³ããŒãã³ããå
±æç¶æ
ãšããŒã¿ã«ã©ã®ããã«ã¢ã¯ã»ã¹ããçžäºäœçšãããã§ããå®éšçãª`experimental_use` Hookã¯ã<Scope>ã³ã³ããŒãã³ããšçµã¿åããããšãReactã¢ããªã±ãŒã·ã§ã³å
ã§ã¹ã³ãŒããšã³ã³ããã¹ããå¶åŸ¡ããããã®åŒ·åãªïŒãã ãããŸã å®éšçãªïŒã¢ãããŒããæäŸããŸãããã®èšäºã§ã¯ããããã®æ©èœã®ç®çãäœ¿çšæ³ãããã³è€éã§ä¿å®å¯èœãªReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®æœåšçãªå©ç¹ã«ã€ããŠæ·±ãæãäžããŸãã
Reactã«ãããã¹ã³ãŒã管çãšã¯äœã§ããïŒ
Reactã®ã³ã³ããã¹ãã«ãããã¹ã³ãŒã管çãšã¯ãã³ã³ããŒãã³ããç¶æ ãã³ã³ããã¹ããããã³ãã®ä»ã®ããŒã¿ã«ã©ã®ããã«ã¢ã¯ã»ã¹ããŠå€æŽããããæããŸããåŸæ¥ãReactã¯ãã³ã³ããŒãã³ãããªãŒå šäœã§ããŒã¿ãå ±æããããã«ãpropsã®åãæž¡ããšContext APIã«å€§ããäŸåããŠããŸãããããã®æ¹æ³ã¯å¹æçã§ãããæ·±ããã¹ããããã³ã³ããŒãã³ããŸãã¯è€éãªããŒã¿äŸåé¢ä¿ãæã€å€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãé¢åã«ãªãå¯èœæ§ããããŸããçºçããåé¡ã¯æ¬¡ã®ãšããã§ãã
- Propsã®åãæž¡ã: çŽæ¥äœ¿çšããªãè€æ°ã®ã¬ã€ã€ãŒã®ã³ã³ããŒãã³ããä»ããŠpropsãæž¡ããããã³ãŒãã®èªã¿åããšä¿å®ãé£ãããªããŸãã
- ã³ã³ããã¹ãçµå: ã³ã³ããŒãã³ããç¹å®ã®ã³ã³ããã¹ããããã€ããŒã«å¯æ¥ã«çµåãããåå©çšæ§ãäœäžãããã¹ããé£ãããªããŸãã
- ã°ããŒãã«ç¶æ 管çã®èª²é¡: ããŸããŸãªã°ããŒãã«ç¶æ 管çã©ã€ãã©ãªïŒReduxãZustandãJotaiãªã©ïŒã®äžããéžæãããšãè€éããå¢ããæ éã«å®è£ ããªããšããã©ãŒãã³ã¹ã®ããã«ããã¯ã«ã€ãªããå¯èœæ§ããããŸãã
`experimental_use` Hookãš<Scope>ã³ã³ããŒãã³ãã¯ãReactã¢ããªã±ãŒã·ã§ã³å
ã§ã¹ã³ãŒããšã³ã³ããã¹ããããå¶åŸ¡ãããæç€ºçãªæ¹æ³ã§ç®¡çããããšã«ããããããã®èª²é¡ã«å¯ŸåŠããããšãç®çãšããŠããŸãããããã¯çŸåšå®éšçãªãã®ã§ãããAPIã¯å°æ¥ã®ReactãªãªãŒã¹ã§å€æŽãããå¯èœæ§ããããŸãã
`experimental_use`ãš`<Scope>`ã®ç޹ä»
ãããã®å®éšçãªæ©èœã¯é£æºããŠãReactã³ã³ããŒãã³ãããªãŒå ã«åé¢ãããã¹ã³ãŒããäœæããŸããã¹ã³ãŒãããç¹å®ã®å€ãšç¶æ ããã®ãµã³ãããã¯ã¹å ã®ã³ã³ããŒãã³ãã§ã®ã¿å©çšã§ãããµã³ãããã¯ã¹ãšèããŠãã ããããã®åé¢ã«ãããã³ã³ããŒãã³ãã®åå©çšæ§ããã¹ãå®¹ææ§ãããã³å šäœçãªã³ãŒãã®æç¢ºããåäžãããããšãã§ããŸãã
`experimental_use` Hook
`experimental_use` Hookã䜿çšãããšãç¹å®ã®ã¹ã³ãŒãå
ã§å€ãäœæããŠã¢ã¯ã»ã¹ã§ããŸããããã¯ãå€ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãŸãã¯ãã¡ã¯ããªé¢æ°ãšèŠãªãããšãã§ããããªãœãŒã¹ããåãå
¥ããŸããæ¬¡ã«ãããã¯ã¯ã¹ã³ãŒãå
ã®å€ã®ã©ã€ããµã€ã¯ã«ã管çããŸããéèŠãªããšã«ã`experimental_use`ã§äœæãããå€ã¯ã°ããŒãã«ã«å
±æãããŸããããããã¯æãè¿ã<Scope>ã³ã³ããŒãã³ãã«ã¹ã³ãŒããããŸãã
äŸ: ã¹ã³ãŒããããã«ãŠã³ã¿ãŒã®äœæ
```javascript import React from 'react'; import { experimental_use as use, Scope } from 'react'; function createCounter() { let count = 0; return { getCount: () => count, increment: () => { count++; }, }; } function Counter() { const counter = use(createCounter); return ( <div> Count: {counter.getCount()} <button onClick={counter.increment}>Increment</button> </div> ); } function App() { return ( <Scope> <Counter /> <Counter /> </Scope> ); } export default App; ```ãã®äŸã§ã¯ãcreateCounterã¯ãã¡ã¯ããªé¢æ°ã§ãã<Scope>å
ã®å<Counter/>ã³ã³ããŒãã³ãã«ã¯ãç¬èªã®åé¢ãããã«ãŠã³ã¿ãŒã€ã³ã¹ã¿ã³ã¹ããããŸãã1ã€ã®ã«ãŠã³ã¿ãŒã§ãIncrementããã¯ãªãã¯ããŠããä»ã®ã«ãŠã³ã¿ãŒã«ã¯åœ±é¿ããŸããã
`<Scope>` ã³ã³ããŒãã³ã
<Scope>ã³ã³ããŒãã³ãã¯ãã¹ã³ãŒãã®å¢çãå®çŸ©ããŸãã<Scope>å
ã§`experimental_use`ã§äœæãããå€ã¯ããã®<Scope>ã®åå«ã§ããã³ã³ããŒãã³ãã®ã¿ãã¢ã¯ã»ã¹ã§ããŸãããã®ã³ã³ããŒãã³ãã¯ãç¶æ
ãåé¢ããæå³ããªãå¯äœçšãã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåã«æŒããã®ãé²ãããã®ã³ã³ãããšããŠæ©èœããŸãã
äŸ: ãã¹ããããã¹ã³ãŒã
```javascript import React from 'react'; import { experimental_use as use, Scope } from 'react'; function createTheme(themeName) { return { name: themeName, getTheme: () => themeName, }; } function ThemeDisplay() { const theme = use(() => createTheme("Default Theme")); return <div>Theme: {theme.getTheme()}</div>; } function App() { return ( <Scope> <ThemeDisplay /> <Scope> <ThemeDisplay /> </Scope> </Scope> ); } export default App; ```çŸåšããã¹ãŠã®ããŒãã¯ãDefault Themeãã§ããããã¯ããã¡ã¯ããªé¢æ°ãåžžã«åãããŒãåãè¿ãããã§ãããã ããå
éšã¹ã³ãŒãã§ããŒãããªãŒããŒã©ã€ããããå ŽåãçŸåšã®å®éšçAPIïŒå·çæç¹ïŒã§ã¯çŸåšäžå¯èœã§ããããã¯ãçŸåšã®å®éšçå®è£
ã®å¶éäºé
ã匷調ããŠããŸãããã ãããã¹ãããã<Scope>ã³ã³ããŒãã³ãã䜿çšããåºæ¬çãªæ§é ã瀺ããŠããŸãã
`experimental_use`ãš`<Scope>`ã䜿çšããå©ç¹
- ã³ã³ããŒãã³ãã®åé¢ã®æ¹å: åé¢ãããã¹ã³ãŒããäœæããããšã«ãããã³ã³ããŒãã³ãéã®æå³ããªãå¯äœçšãšäŸåé¢ä¿ãé²ããŸãã
- åå©çšæ§ã®åäž: ã³ã³ããŒãã³ãã¯ããèªå·±å®çµåã«ãªããç¹å®ã®ã°ããŒãã«ç¶æ ãŸãã¯ã³ã³ããã¹ããããã€ããŒãžã®äŸå床ãäœããªããããã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåã§ç°¡åã«åå©çšã§ããŸãã
- ãã¹ãã®ç°¡çŽ å: ä»ã®ã¢ããªã±ãŒã·ã§ã³ã®éšåã«åœ±é¿ãäžããããšãªããã¹ã³ãŒãå ã§å©çšå¯èœãªå€ãå¶åŸ¡ã§ãããããåé¢ãããã³ã³ããŒãã³ãã®ãã¹ãã容æã«ãªããŸãã
- æç€ºçãªäŸåé¢ä¿ç®¡ç: `experimental_use`ã¯ãã³ã³ããŒãã³ããå¿ èŠãšããããŒã¿ãæç¢ºã«æŠèª¬ãããªãœãŒã¹ãã¡ã¯ããªé¢æ°ãå®çŸ©ããå¿ èŠããããããäŸåé¢ä¿ãããæç€ºçã«ããŸãã
- Propsã®åãæž¡ãã®åæž: å¿ èŠãªå Žæã«ç¶æ ãããè¿ã¥ããŠç®¡çããããšã§ãè€æ°ã®ã¬ã€ã€ãŒã®ã³ã³ããŒãã³ããä»ããŠpropsãæž¡ãããšãåé¿ã§ããŸãã
`experimental_use`ãš`<Scope>`ã®äœ¿çšäŸ
ãããã®æ©èœã¯ãè€éãªç¶æ ã管çããããã³ã³ããŒãã³ãã®åé¢ãããç°å¢ãäœæãããããå¿ èŠãããã·ããªãªã§ç¹ã«åœ¹ç«ã¡ãŸããããã€ãã®äŸã次ã«ç€ºããŸãã
- ãã©ãŒã 管ç: ãã©ãŒã ãäžå¿ã«
<Scope>ãäœæããŠãã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåã«åœ±é¿ãäžããããšãªãããã©ãŒã ã®ç¶æ ïŒå ¥åå€ãæ€èšŒãšã©ãŒïŒã管çããŸããããã¯ã`react-hook-form`ãªã©ã®ã©ã€ãã©ãªãã`useForm`ã䜿çšããã®ãšäŒŒãŠããŸãããã¹ã³ãŒãããã现ããå¶åŸ¡ã§ããå¯èœæ§ããããŸãã - ããŒã: ç°ãªãããŒãå€ãæå®ããåå¥ã®
<Scope>ã³ã³ããŒãã³ãã§ã©ããããããšã«ãããã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãã»ã¯ã·ã§ã³ã«ç°ãªãããŒããæäŸããŸãã - ãã€ã¯ãããã³ããšã³ãã§ã®ã³ã³ããã¹ãã®åé¢: ãã€ã¯ãããã³ããšã³ããæ§ç¯ããå Žåããããã®æ©èœã¯ãåãã€ã¯ãããã³ããšã³ãã®ã³ã³ããã¹ããšäŸåé¢ä¿ãåé¢ããç«¶åãé²ããåå¥ã«ãããã€ããã³æŽæ°ã§ããããã«ããã®ã«åœ¹ç«ã¡ãŸãã
- ã²ãŒã ã®ç¶æ
ã®ç®¡ç: ã²ãŒã ã§ã¯ã
<Scope>ã䜿çšããŠãç°ãªãã²ãŒã ã¬ãã«ãŸãã¯ãã£ã©ã¯ã¿ãŒã®ç¶æ ãåé¢ãããããã®éã®æå³ããªãçžäºäœçšãé²ãããšãã§ããŸããããšãã°ãåãã¬ã€ã€ãŒãã£ã©ã¯ã¿ãŒã¯ããã®ãã«ã¹ãã€ã³ãã³ããªãããã³èœåãå«ãç¬èªã®ã¹ã³ãŒããæã€ããšãã§ããŸãã - A/Bãã¹ã: ã¹ã³ãŒãã䜿çšããŠãã³ã³ããŒãã³ããŸãã¯æ©èœã®ç°ãªãããªãšãŒã·ã§ã³ãA/Bãã¹ãã®ç®çã§ç°ãªããŠãŒã¶ãŒã«æäŸã§ããŸããåã¹ã³ãŒãã¯ãç°ãªãæ§æãŸãã¯ããŒã¿ã»ãããæäŸã§ããŸãã
å¶éäºé ãšèæ ®äºé
`experimental_use`ãš<Scope>ãæ¡çšããåã«ããããã®å¶éäºé
ãèªèããããšãéèŠã§ãã
- å®éšçã¹ããŒã¿ã¹: ååã瀺ãããã«ããããã®æ©èœã¯ãŸã å®éšçã§ããã倿Žãããå¯èœæ§ããããŸãã APIã¯å€æŽãããããå°æ¥ã®ReactãªãªãŒã¹ã§åé€ããããããå¯èœæ§ããããŸãã æ¬çªç°å¢ã§ã®äœ¿çšã«ã¯æ³šæããŠãã ããã
- è€éã: ã¹ã³ãŒããå°å ¥ãããšãç¹ã«è³¢æã«äœ¿çšããªãå Žåãã¢ããªã±ãŒã·ã§ã³ã«è€éããå ããå¯èœæ§ããããŸããã¡ãªãããè€éããäžåããã©ãããæ éã«æ€èšããŠãã ããã
- æœåšçãªããã©ãŒãã³ã¹ã®ãªãŒããŒããã: ã¹ã³ãŒãã®äœæãšç®¡çã«ã¯ãããçšåºŠã®ããã©ãŒãã³ã¹ã®ãªãŒããŒããããçºçããå¯èœæ§ããããŸãããã»ãšãã©ã®å Žåãããã¯æå°éã§ããå¯èœæ§ããããŸããããã©ãŒãã³ã¹ãæžå¿µãããå Žåã¯ãã¢ããªã±ãŒã·ã§ã³ã培åºçã«ãããã¡ã€ã«ããŠãã ããã
- åŠç¿æ²ç·: éçºè
ã¯ããããã®æ©èœã广çã«äœ¿çšããããã«ãã¹ã³ãŒãã®æŠå¿µãš`experimental_use`ããã³
<Scope>ã®åäœãçè§£ããå¿ èŠããããŸãã - éãããããã¥ã¡ã³ã: ãããã®æ©èœã¯å®éšçãªãã®ã§ãããããå ¬åŒããã¥ã¡ã³ãã¯ãŸã°ãã§ããããäžå®å šã§ããå¯èœæ§ããããŸããã³ãã¥ããã£ã¯å®éšãšå ±æç¥èã«äŸåããŠããŸãã
- åã¹ã³ãŒãã§ã¹ã³ãŒããããå€ããªãŒããŒã©ã€ãããããã®çµã¿èŸŒã¿ã¡ã«ããºã ã¯ãããŸãã: ããã¹ããããã¹ã³ãŒããã®äŸã§ç€ºãããŠããããã«ãçŸåšã®å®éšçAPIã¯ã芪ã¹ã³ãŒãã§æäŸãããå€ãåã¹ã³ãŒãå ã§ãªãŒããŒã©ã€ãããç°¡åãªæ¹æ³ãæäŸããŠããŸããããã®å¶éã«å¯ŸåŠããã«ã¯ããããªãå®éšãšAPIã®å€æŽãå¿ èŠã«ãªãå¯èœæ§ããããŸãã
`experimental_use`ãš`<Scope>`ã®ä»£æ¿æ¡
`experimental_use`ãš<Scope>ã¯ã¹ã³ãŒã管çãžã®æ°ããã¢ãããŒããæäŸããŸãããããã€ãã®ç¢ºç«ãããä»£æ¿æ¡ãååšããŸãã
- React Context API: çµã¿èŸŒã¿ã®Context APIã¯ãpropsã®åãæž¡ããªãã«ã³ã³ããŒãã³ãããªãŒå šäœã§ããŒã¿ãå ±æããããã®å ç¢ãªéžæè¢ã§ãããã ããã³ã³ããŒãã³ããç¹å®ã®ã³ã³ããã¹ããããã€ããŒã«é床ã«äŸåããŠããå Žåãã³ã³ããã¹ãçµåã«ã€ãªããå¯èœæ§ããããŸãã
- ã°ããŒãã«ç¶æ 管çã©ã€ãã©ãªïŒReduxãZustandãJotaiïŒ: ãããã®ã©ã€ãã©ãªã¯ãè€éãªã¢ããªã±ãŒã·ã§ã³åãã«éäžåãããç¶æ 管çãæäŸããŸãããããã¯ãã¿ã€ã ãã©ãã«ãããã°ãããã«ãŠã§ã¢ãªã©ã®åŒ·åãªæ©èœãæäŸããŸãããããªãã®ãã€ã©ãŒãã¬ãŒããšè€éãã远å ããå¯èœæ§ããããŸãã
- åæã䜿çšããPropsã®åãæž¡ã: ãã°ãã°æšå¥šãããŸããããpropsã®åãæž¡ãã¯ãã³ã³ããŒãã³ãããªãŒãæ¯èŒçæµ ãå°èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã¯å®è¡å¯èœãªãªãã·ã§ã³ã§ããã³ã³ããŒãã³ãåæãã¿ãŒã³ã䜿çšãããšãpropsã®åãæž¡ãã®æ¬ ç¹ã®ããã€ãã軜æžã§ããŸãã
- ã«ã¹ã¿ã ããã¯: ã«ã¹ã¿ã ããã¯ãäœæãããšãç¶æ ããžãã¯ãã«ãã»ã«åããã³ãŒãã®éè€ãæžããããšãã§ããŸããã«ã¹ã¿ã ããã¯ã䜿çšããŠãã³ã³ããã¹ãå€ã管çããã³ã³ããŒãã³ãã®ããåçåãããAPIãæäŸããããšãã§ããŸãã
ã³ãŒãäŸ: å®çšçãªã¢ããªã±ãŒã·ã§ã³
`experimental_use`ãš<Scope>ãå®éã®ã·ããªãªã§äœ¿çšããæ¹æ³ã®ãã詳现ãªäŸãèŠãŠã¿ãŸãããã
äŸ1: ã¹ã³ãŒãããããŠãŒã¶ãŒèšå®
ããŒããèšèªããã©ã³ããµã€ãºãªã©ãã«ã¹ã¿ãã€ãºå¯èœãªãŠãŒã¶ãŒèšå®ãåããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠãããšæ³åããŠãã ããããããã®èšå®ãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®ã»ã¯ã·ã§ã³å ã§åé¢ãããå ŽåããããŸãã
```javascript import React from 'react'; import { experimental_use as use, Scope } from 'react'; function createPreferences(initialPreferences) { let preferences = { ...initialPreferences }; return { getPreference: (key) => preferences[key], setPreference: (key, value) => { preferences[key] = value; }, }; } function PreferenceDisplay({ key }) { const preferences = use(() => createPreferences({ theme: "light", language: "en", fontSize: "16px" })); return <div>{key}: {preferences.getPreference(key)}</div>; } function PreferenceSection() { return ( <div> <h3>Preferences</h3> <PreferenceDisplay key="theme"/> <PreferenceDisplay key="language"/> <PreferenceDisplay key="fontSize"/> </div> ); } function App() { return ( <div> <h1>My App</h1> <Scope> <PreferenceSection /> </Scope> <Scope> <PreferenceSection /> </Scope> </div> ); } export default App; ```ãã®äŸã§ã¯ãå<Scope>ã¯ãç¬èªã®åé¢ããããŠãŒã¶ãŒèšå®ã®ã»ãããäœæããŸãã1ã€ã®ã¹ã³ãŒãå
ã§èšå®ã«å ãã倿Žã¯ãä»ã®ã¹ã³ãŒãã®èšå®ã«ã¯åœ±é¿ããŸããã
äŸ2: ã¹ã³ãŒãã䜿çšãããã©ãŒã ã®ç¶æ ã®ç®¡ç
ãã®äŸã§ã¯ã<Scope>å
ã§ãã©ãŒã ã®ç¶æ
ãåé¢ããæ¹æ³ã瀺ããŸããããã¯ãåäžã®ããŒãžã«è€æ°ã®ãã©ãŒã ããããããããäºãã«å¹²æžããªãããã«ããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
ããããã®<Scope>å
ã®å<Form/>ã³ã³ããŒãã³ãã¯ãç¬èªã®ç¬ç«ããç¶æ
ãç¶æããŸãããã©ãŒã 1ã§ååãŸãã¯é»åã¡ãŒã«ãæŽæ°ããŠãããã©ãŒã 2ã®å€ã«ã¯åœ±é¿ããŸããã
`experimental_use`ãš`<Scope>`ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
ãããã®å®éšçãªæ©èœã广çã«äœ¿çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
- å°ããå§ãã: ã¢ããªã±ãŒã·ã§ã³å
šäœãäžåºŠã«ãªãã¡ã¯ã¿ãªã³ã°ããããšããªãã§ãã ãããã³ãŒãã®å°ããåé¢ãããã»ã¯ã·ã§ã³ã§`experimental_use`ãš
<Scope>ã䜿çšããããšããå§ããŠãçµéšãšçè§£ãæ·±ããŸãã - ã¹ã³ãŒãå¢çãæç¢ºã«å®çŸ©ãã:
<Scope>ã³ã³ããŒãã³ããé 眮ããå Žæãæ éã«æ€èšããŠãã ãããé©åã«å®çŸ©ãããã¹ã³ãŒãã¯ãæ©èœã®è«çãŠããããã«ãã»ã«åããæå³ããªãå¯äœçšãé²ãå¿ èŠããããŸãã - ã¹ã³ãŒããææžåãã: åã¹ã³ãŒãã®ç®çãšãã®äžã«å«ãŸããå€ã説æããããã«ãã³ãŒãã«ã³ã¡ã³ãã远å ããŸããããã«ãããä»ã®éçºè ïŒããã³å°æ¥ã®èªåèªèº«ïŒãã¢ããªã±ãŒã·ã§ã³ã®æ§é ãçè§£ãããããªããŸãã
- 培åºçã«ãã¹ããã: ãããã®æ©èœã¯å®éšçãªãã®ã§ãããããã³ãŒãã培åºçã«ãã¹ãããããšãç¹ã«éèŠã§ãããŠããããã¹ããäœæããŠãã³ã³ããŒãã³ããããããã®ã¹ã³ãŒãå ã§æåŸ ã©ããã«åäœããããšã確èªããŸãã
- åžžã«ææ°æ
å ±ãå
¥æãã: `experimental_use`ãš
<Scope>ã«é¢ããææ°ã®ReactãªãªãŒã¹ãšãã£ã¹ã«ãã·ã§ã³ãåžžã«ææ¡ããŠãã ããã APIã倿Žãããå¯èœæ§ããããæ°ãããã¹ããã©ã¯ãã£ã¹ãç»å Žããå¯èœæ§ããããŸãã - é床ã®äœ¿çšãé¿ãã: ã¹ã³ãŒããé床ã«äœ¿çšããªãã§ãã ãããContext APIãpropsã®åãæž¡ããªã©ã®ããç°¡åãªãœãªã¥ãŒã·ã§ã³ã§ååãªå Žåã¯ããããã«åºå·ããŠãã ãããã³ã³ããŒãã³ãã®åé¢ãåå©çšæ§ããŸãã¯ãã¹ãå®¹ææ§ã®ç¹ã§æç¢ºãªã¡ãªãããããå Žåã«ã®ã¿ãã¹ã³ãŒããå°å ¥ããŸãã
- ä»£æ¿æ¡ãæ€èšãã: ç¹å®ã®ããŒãºã«å¯ŸããŠã代æ¿ã®ç¶æ 管çãœãªã¥ãŒã·ã§ã³ãããé©ããŠãããã©ãããåžžã«è©äŸ¡ããŠãã ãããReduxãZustandãããã³ãã®ä»ã®ã©ã€ãã©ãªã¯ãç¹å®ã®ã·ããªãªã§ããå æ¬çãªæ©èœãšããåªããããã©ãŒãã³ã¹ãæäŸããå ŽåããããŸãã
Reactã«ãããã¹ã³ãŒã管çã®æªæ¥
`experimental_use` Hookãš<Scope>ã³ã³ããŒãã³ãã¯ãReactã«ãããã¹ã³ãŒã管çã®ãšããµã€ãã£ã³ã°ãªæ¹åæ§ã瀺ããŠããŸãããŸã å®éšçã§ã¯ãããŸããããããã¯ãReactéçºè
ãç¶æ
ãšã³ã³ããã¹ãããã现ããå¶åŸ¡ã§ããããã«ãªããããã¢ãžã¥ãŒã«åŒã§ãã¹ãå¯èœã§ä¿å®å¯èœãªã¢ããªã±ãŒã·ã§ã³ã«ã€ãªããæªæ¥ãå£éèŠãããšãã§ããŸããReactããŒã ã¯ããããã®æ©èœã®èª¿æ»ãšæ¹è¯ãç¶ããŠãããä»åŸæ°å¹Žéã§å€§å¹
ã«é²åããå¯èœæ§ããããŸãã
ãããã®æ©èœãæçããã«ã€ããŠãReactã³ãã¥ããã£ãããããå®éšããçµéšãå ±æããReactããŒã ã«ãã£ãŒãããã¯ãæäŸããããšãéèŠã§ããååããããšã§ãReactã«ãããã¹ã³ãŒã管çã®æªæ¥ã圢äœããããã«åªãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããšãã§ããŸãã
çµè«
Reactã®å®éšçãª`experimental_use`ãš<Scope>ã¯ãããæç€ºçã§å¶åŸ¡ãããã¹ã³ãŒã管çãžã®é
åçãªæ¢æ±ãæäŸããŸããçŸåšå®éšçã§ãããé¢é£ãããªã¹ã¯ã䌎ããŸããããããã®æ©èœã¯ãè€éãªã¢ããªã±ãŒã·ã§ã³ã«ãããã³ã³ããŒãã³ãã®åé¢ãåå©çšæ§ãããã³ãã¹ãå®¹ææ§ã«æœåšçãªã¡ãªããããããããŸããæ¬çªã³ãŒãã«çµ±åããåã«ãå®éšçãªæ§è³ªãšè€éãã«å¯ŸããŠå©ç¹ãæ¯èŒæ€èšããŠãã ããããããã®APIãæçããã«ã€ããŠãå°æ¥ã®Reactã®æŽæ°æ
å ±ãåžžã«ææ¡ããŠãã ããã
å®éšçãªæ©èœã«é£ã³èŸŒãåã«ãReactã®ç¶æ 管çãšã³ã³ããã¹ãã®åºæ¬ååãçè§£ããããšãéèŠã§ããããšãå¿ããªãã§ãã ããããããã®åºæ¬çãªæŠå¿µãç¿åŸãããã¬ãŒããªããæ éã«æ€èšããããšã§ãReactã¢ããªã±ãŒã·ã§ã³ã§ã¹ã³ãŒããæé©ã«ç®¡çããæ¹æ³ã«ã€ããŠæ å ±ã«åºã¥ããæææ±ºå®ãè¡ãããšãã§ããŸãã