Reactã®experimental_useSubscription APIã䜿çšããã¡ã¢ãªç®¡çã®å æ¬çã¬ã€ãããµãã¹ã¯ãªãã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ãæé©åããã¡ã¢ãªãªãŒã¯ãé²ããå ç¢ãªReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããæ¹æ³ãåŠã³ãŸãã
React experimental_useSubscription: ãµãã¹ã¯ãªãã·ã§ã³ã®ã¡ã¢ãªå¶åŸ¡ããã¹ã¿ãŒãã
Reactã®experimental_useSubscriptionããã¯ã¯ããŸã å®é𿮵éã«ãããŸãããReactã³ã³ããŒãã³ãå
ã§ã®ãµãã¹ã¯ãªãã·ã§ã³ç®¡çã®ããã®åŒ·åãªã¡ã«ããºã ãæäŸããŸãããã®ããã°èšäºã§ã¯ãexperimental_useSubscriptionã®è€éãªè©³çްãç¹ã«ã¡ã¢ãªç®¡çã®åŽé¢ã«çŠç¹ãåœãŠãŠæãäžããŸãããµãã¹ã¯ãªãã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ã广çã«å¶åŸ¡ããäžè¬çãªã¡ã¢ãªãªãŒã¯ãé²ããReactã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããæ¹æ³ãæ¢ããŸãã
experimental_useSubscriptionãšã¯ïŒ
experimental_useSubscriptionããã¯ã¯ãç¹ã«ã¹ãã¢ãããŒã¿ããŒã¹ãã€ãã³ããšããã¿ãªã©ã®å€éšããŒã¿ãœãŒã¹ãæ±ãéã«ãããŒã¿ãµãã¹ã¯ãªãã·ã§ã³ãå¹ççã«ç®¡çããããã«èšèšãããŠããŸããããŒã¿ã®å€æŽããµãã¹ã¯ã©ã€ãããã³ã³ããŒãã³ããã¢ã³ããŠã³ãããããšãã«èªåçã«ã¢ã³ãµãã¹ã¯ã©ã€ãããããã»ã¹ãç°¡çŽ åããããã«ãã£ãŠã¡ã¢ãªãªãŒã¯ãé²ãããšãç®çãšããŠããŸããããã¯ãã³ã³ããŒãã³ãã®ããŠã³ããšã¢ã³ããŠã³ããé »ç¹ã«è¡ãããè€éãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ç¹ã«éèŠã§ãã
äž»ãªå©ç¹:
- ãµãã¹ã¯ãªãã·ã§ã³ç®¡çã®ç°¡çŽ å: ãµãã¹ã¯ãªãã·ã§ã³ã管çããããã®æç¢ºã§ç°¡æœãªAPIãæäŸããŸãã
- èªåã¢ã³ãµãã¹ã¯ã©ã€ã: ã³ã³ããŒãã³ããã¢ã³ããŠã³ããããéã«ãµãã¹ã¯ãªãã·ã§ã³ãèªåçã«ã¯ãªãŒã³ã¢ãããããããšãä¿èšŒããã¡ã¢ãªãªãŒã¯ãé²ããŸãã
- æé©åãããããã©ãŒãã³ã¹: Reactã«ãã£ãŠäžŠè¡ã¬ã³ããªã³ã°ãšå¹ççãªæŽæ°ã®ããã«æé©åãããå¯èœæ§ããããŸãã
ã¡ã¢ãªç®¡çã®èª²é¡ãçè§£ãã
é©åãªç®¡çããªããã°ããµãã¹ã¯ãªãã·ã§ã³ã¯å®¹æã«ã¡ã¢ãªãªãŒã¯ãåŒãèµ·ããå¯èœæ§ããããŸããã³ã³ããŒãã³ããããŒã¿ã¹ããªãŒã ããµãã¹ã¯ã©ã€ãããŠããã«ãããããããäžèŠã«ãªã£ããšãã«ã¢ã³ãµãã¹ã¯ã©ã€ãããªãã£ãå Žåãæ³åããŠã¿ãŠãã ããããã®ãµãã¹ã¯ãªãã·ã§ã³ã¯ã¡ã¢ãªå ã«ååšãç¶ãããªãœãŒã¹ãæ¶è²»ããããã©ãŒãã³ã¹ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸããæéã®çµéãšãšãã«ããããã®å€ç«ãããµãã¹ã¯ãªãã·ã§ã³ãèç©ãããé倧ãªã¡ã¢ãªãªãŒããŒããããåŒãèµ·ãããã¢ããªã±ãŒã·ã§ã³ã®åäœãé ãããŸãã
ã°ããŒãã«ãªæèã§ã¯ãããã¯æ§ã ãªåœ¢ã§çŸããå¯èœæ§ããããŸããäŸãã°ããªã¢ã«ã¿ã€ã ã®æ ªååŒã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã³ã³ããŒãã³ããåžå ŽããŒã¿ããµãã¹ã¯ã©ã€ãããããšããããŸãããããã®ãµãã¹ã¯ãªãã·ã§ã³ãé©åã«ç®¡çãããŠããªãå Žåãåžå Žãäžå®å®ãªå°åã®ãŠãŒã¶ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ãæŒæŽ©ãããµãã¹ã¯ãªãã·ã§ã³ã®å¢å ã«å¯ŸåŠããã®ã«èŠåŽãããããå€§å¹ ãªããã©ãŒãã³ã¹ã®äœäžãçµéšããå¯èœæ§ããããŸãã
ã¡ã¢ãªå¶åŸ¡ã®ããã®experimental_useSubscriptionãžã®æ·±å ¥ã
experimental_useSubscriptionããã¯ã¯ããããã®ãµãã¹ã¯ãªãã·ã§ã³ã管çããã¡ã¢ãªãªãŒã¯ãé²ãããã®æ§é åãããæ¹æ³ãæäŸããŸãããã®ã³ã¢ã³ã³ããŒãã³ããšããããã广çãªã¡ã¢ãªç®¡çã«ã©ã®ããã«è²¢ç®ããããæ¢ã£ãŠã¿ãŸãããã
1. optionsãªããžã§ã¯ã
experimental_useSubscriptionãžã®äž»ãªåŒæ°ã¯ããµãã¹ã¯ãªãã·ã§ã³ãæ§æããoptionsãªããžã§ã¯ãã§ãããã®ãªããžã§ã¯ãã«ã¯ãããã€ãã®éèŠãªããããã£ãå«ãŸããŠããŸã:
create(dataSource): ãã®é¢æ°ã¯ãµãã¹ã¯ãªãã·ã§ã³ã®äœæãæ åœããŸããåŒæ°ãšããŠdataSourceãåãåããsubscribeãšgetValueã¡ãœãããæã€ãªããžã§ã¯ããè¿ãå¿ èŠããããŸããsubscribe(callback): ãã®ã¡ãœããã¯ãµãã¹ã¯ãªãã·ã§ã³ã確ç«ããããã«åŒã³åºãããŸããããŒã¿ãœãŒã¹ãæ°ããå€ãçºè¡ãããã³ã«åŒã³åºãããã¹ãã³ãŒã«ããã¯é¢æ°ãåãåããŸããéèŠãªããšã«ããã®é¢æ°ã¯ã¢ã³ãµãã¹ã¯ã©ã€ã颿°ãè¿ããªããã°ãªããŸãããgetValue(source): ãã®ã¡ãœããã¯ããŒã¿ãœãŒã¹ããçŸåšã®å€ãååŸããããã«åŒã³åºãããŸãã
2. ã¢ã³ãµãã¹ã¯ã©ã€ã颿°
subscribeã¡ãœãããã¢ã³ãµãã¹ã¯ã©ã€ã颿°ãè¿ã責任ã¯ãã¡ã¢ãªç®¡çã«ãšã£ãŠæãéèŠã§ãããã®é¢æ°ã¯ãã³ã³ããŒãã³ããã¢ã³ããŠã³ãããããšãããŸãã¯dataSourceã倿Žããããšãã«Reactã«ãã£ãŠåŒã³åºãããŸãïŒããã«ã€ããŠã¯åŸè¿°ããŸãïŒãã¡ã¢ãªãªãŒã¯ãé²ãããã«ã¯ããã®é¢æ°å
ã§ãµãã¹ã¯ãªãã·ã§ã³ãé©åã«ã¯ãªãŒã³ã¢ããããããšãäžå¯æ¬ ã§ãã
äŸ:
```javascript import { experimental_useSubscription as useSubscription } from 'react'; import { myDataSource } from './data-source'; // Assumed external data source function MyComponent() { const options = { create: () => ({ getValue: () => myDataSource.getValue(), subscribe: (callback) => { const unsubscribe = myDataSource.subscribe(callback); return unsubscribe; // Return the unsubscribe function }, }), }; const data = useSubscription(myDataSource, options); return (ãã®äŸã§ã¯ãmyDataSource.subscribe(callback)ã¯ãåŒã³åºããããšããŒã¿ãœãŒã¹ã®ãªã¹ããŒããã³ãŒã«ããã¯ãåé€ãã颿°ãè¿ããšæ³å®ãããŠããŸãããã®ã¢ã³ãµãã¹ã¯ã©ã€ã颿°ã¯subscribeã¡ãœããã«ãã£ãŠè¿ãããReactããµãã¹ã¯ãªãã·ã§ã³ãé©åã«ã¯ãªãŒã³ã¢ããã§ããããšãä¿èšŒããŸãã
experimental_useSubscriptionã§ã¡ã¢ãªãªãŒã¯ãé²ãããã®ãã¹ããã©ã¯ãã£ã¹
experimental_useSubscriptionã䜿çšããŠæé©ãªã¡ã¢ãªç®¡çãä¿èšŒããããã«åŸãã¹ããããã€ãã®éèŠãªãã¹ããã©ã¯ãã£ã¹ã以äžã«ç€ºããŸã:
1. åžžã«ã¢ã³ãµãã¹ã¯ã©ã€ã颿°ãè¿ã
ãããæãéèŠãªã¹ãããã§ããsubscribeã¡ãœããããµãã¹ã¯ãªãã·ã§ã³ãé©åã«ã¯ãªãŒã³ã¢ãããã颿°ãåžžã«è¿ãããã«ããŠãã ããããã®ã¹ããããæ ãããšããexperimental_useSubscriptionã䜿çšããéã®ã¡ã¢ãªãªãŒã¯ã®æãäžè¬çãªåå ã§ãã
2. åçãªããŒã¿ãœãŒã¹ãæ±ã
ã³ã³ããŒãã³ããæ°ããdataSourceãããããåãåã£ãå ŽåãReactã¯æ°ããããŒã¿ãœãŒã¹ã䜿çšããŠèªåçã«ãµãã¹ã¯ãªãã·ã§ã³ãå確ç«ããŸããããã¯éåžžæãŸããããšã§ãããæ°ãããµãã¹ã¯ãªãã·ã§ã³ãäœæãããåã«ãåã®ãµãã¹ã¯ãªãã·ã§ã³ãé©åã«ã¯ãªãŒã³ã¢ãããããŠããããšã確èªããããšãéèŠã§ããexperimental_useSubscriptionããã¯ã¯ãå
ã®ãµãã¹ã¯ãªãã·ã§ã³ã§æå¹ãªã¢ã³ãµãã¹ã¯ã©ã€ã颿°ãæäŸããŠããã°ããããèªåçã«åŠçããŸãã
äŸ:
```javascript import { experimental_useSubscription as useSubscription } from 'react'; function MyComponent({ dataSource }) { const options = { create: () => ({ getValue: () => dataSource.getValue(), subscribe: (callback) => { const unsubscribe = dataSource.subscribe(callback); return unsubscribe; }, }), }; const data = useSubscription(dataSource, options); return (ãã®ã·ããªãªã§ã¯ãdataSourceããããã倿Žãããå ŽåãReactã¯èªåçã«å€ãããŒã¿ãœãŒã¹ããã¢ã³ãµãã¹ã¯ã©ã€ãããæ°ããããŒã¿ãœãŒã¹ã«ãµãã¹ã¯ã©ã€ãããŸãããã®éãæäŸãããã¢ã³ãµãã¹ã¯ã©ã€ã颿°ã䜿çšããŠå€ããµãã¹ã¯ãªãã·ã§ã³ãã¯ãªãŒã³ã¢ããããŸããããã¯ããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«åºã¥ããŠç°ãªãWebSocketãã£ãã«ã«æ¥ç¶ãããªã©ãç°ãªãããŒã¿ãœãŒã¹ãåãæ¿ããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéåžžã«éèŠã§ãã
3. ã¯ããŒãžã£ã®çœ ã«æ³šæãã
ã¯ããŒãžã£ã¯æã«äºæãã¬åäœãã¡ã¢ãªãªãŒã¯ãåŒãèµ·ããããšããããŸããsubscribeããã³unsubscribe颿°å
ã§å€æ°ããã£ããã£ããéã¯æ³šæããŠãã ãããç¹ã«ããããã®å€æ°ãå¯å€ïŒãã¥ãŒã¿ãã«ïŒã§ããå Žåã¯æ³šæãå¿
èŠã§ãã誀ã£ãŠå€ãåç
§ãä¿æãç¶ãããšãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã劚ããŠããå¯èœæ§ããããŸãã
æœåšçãªã¯ããŒãžã£ã®çœ ã®äŸ: ({ getValue: () => myDataSource.getValue(), subscribe: (callback) => { const unsubscribe = myDataSource.subscribe(() => { count++; // Modifying the mutable variable callback(); }); return unsubscribe; }, }), }; const data = useSubscription(myDataSource, options); return (
ãã®äŸã§ã¯ãcount倿°ãmyDataSource.subscribeã«æž¡ãããã³ãŒã«ããã¯é¢æ°ã®ã¯ããŒãžã£ã«ãã£ããã£ãããŠããŸãããã®ç¹å®ã®äŸãçŽæ¥ã¡ã¢ãªãªãŒã¯ãåŒãèµ·ããããã§ã¯ãªããããããŸããããã¯ããŒãžã£ãã©ã®ããã«ããŠãããã§ãªããã°ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®å¯Ÿè±¡ãšãªãã¯ãã®å€æ°ãä¿æãç¶ãããã瀺ããŠããŸããããmyDataSourceãã³ãŒã«ããã¯ãã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«ãããé·ãåç¶ããå Žåãcount倿°ã¯äžå¿
èŠã«çãç¶ããå¯èœæ§ããããŸãã
ç·©åç: ãµãã¹ã¯ãªãã·ã§ã³ã®ã³ãŒã«ããã¯å
ã§å¯å€å€æ°ã䜿çšããå¿
èŠãããå Žåã¯ãuseRefã䜿çšããŠå€æ°ãä¿æããããšãæ€èšããŠãã ãããããã«ãããäžèŠãªã¯ããŒãžã£ãäœæããããšãªããåžžã«ææ°ã®å€ãæ±ãããšãã§ããŸãã
4. ãµãã¹ã¯ãªãã·ã§ã³ããžãã¯ã®æé©å
äžèŠãªãµãã¹ã¯ãªãã·ã§ã³ãäœæããããã³ã³ããŒãã³ãã§ç©æ¥µçã«äœ¿çšãããŠããªãããŒã¿ããµãã¹ã¯ã©ã€ããããããããšã¯é¿ããŠãã ãããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªãããããªã³ããåæžããå šäœçãªããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããã¡ã¢åãæ¡ä»¶ä»ãã¬ã³ããªã³ã°ãªã©ã®ãã¯ããã¯ã䜿çšããŠããµãã¹ã¯ãªãã·ã§ã³ããžãã¯ãæé©åããããšãæ€èšããŠãã ããã
5. ã¡ã¢ãªãããã¡ã€ãªã³ã°ã«DevToolsã䜿çšãã
React DevToolsã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ããããã¡ã€ãªã³ã°ããã¡ã¢ãªãªãŒã¯ãç¹å®ããããã®åŒ·åãªããŒã«ãæäŸããŸãããããã®ããŒã«ã䜿çšããŠãã³ã³ããŒãã³ãã®ã¡ã¢ãªäœ¿çšéãç£èŠããå€ç«ãããµãã¹ã¯ãªãã·ã§ã³ãç¹å®ããŸãããMemorized Subscriptionsãã¡ããªãã¯ã«ç¹ã«æ³šæãæã£ãŠãã ãããããã¯æœåšçãªã¡ã¢ãªãªãŒã¯ã®åé¡ã瀺ããŠããå¯èœæ§ããããŸãã
é«åºŠãªã·ããªãªãšèæ ®äºé
1. ç¶æ 管çã©ã€ãã©ãªãšã®çµ±å
experimental_useSubscriptionã¯ãReduxãZustandãJotaiãªã©ã®äžè¬çãªç¶æ
管çã©ã€ãã©ãªãšã·ãŒã ã¬ã¹ã«çµ±åã§ããŸãããã®ããã¯ã䜿çšããŠã¹ãã¢ã®å€æŽããµãã¹ã¯ã©ã€ãããããã«å¿ããŠã³ã³ããŒãã³ãã®ç¶æ
ãæŽæ°ããããšãã§ããŸãããã®ã¢ãããŒãã¯ãããŒã¿ã®äŸåé¢ä¿ã管çããäžèŠãªåã¬ã³ããªã³ã°ãé²ãããã®ã¯ãªãŒã³ã§å¹ççãªæ¹æ³ãæäŸããŸãã
Reduxã§ã®äŸ:
```javascript import { experimental_useSubscription as useSubscription } from 'react'; import { useSelector, useDispatch } from 'react-redux'; function MyComponent() { const dispatch = useDispatch(); const options = { create: () => ({ getValue: () => useSelector(state => state.myData), subscribe: (callback) => { const unsubscribe = () => {}; // Redux doesn't require explicit unsubscribe return unsubscribe; }, }), }; const data = useSubscription(null, options); return (ãã®äŸã§ã¯ãã³ã³ããŒãã³ãã¯Reduxã®useSelectorã䜿çšããŠReduxã¹ãã¢ã®myDataã¹ã©ã€ã¹ã«ã¢ã¯ã»ã¹ããŸããgetValueã¡ãœããã¯åçŽã«ã¹ãã¢ããçŸåšã®å€ãè¿ããŸããReduxã¯å
éšã§ãµãã¹ã¯ãªãã·ã§ã³ç®¡çãåŠçãããããsubscribeã¡ãœããã¯ç©ºã®ã¢ã³ãµãã¹ã¯ã©ã€ã颿°ãè¿ããŸããæ³šæ: Reduxã¯ã¢ã³ãµãã¹ã¯ã©ã€ã颿°ã*å¿
é *ãšã¯ããŠããŸããããããšãããã§ç€ºãããŠããããã«ç©ºã®é¢æ°ã§ãã£ãŠããå¿
èŠã«å¿ããŠã³ã³ããŒãã³ããã¹ãã¢ããåæãã颿°ãæäŸããããšã¯*è¯ãç¿æ
£*ã§ãã
2. ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒã«é¢ããèæ ®äºé
ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ãããã¢ããªã±ãŒã·ã§ã³ã§experimental_useSubscriptionã䜿çšããå ŽåããµãŒããŒäžã§ã®ãµãã¹ã¯ãªãã·ã§ã³ã®åŠçæ¹æ³ã«æ³šæããŠãã ããããµãŒããŒäžã§é·æéåç¶ãããµãã¹ã¯ãªãã·ã§ã³ãäœæããããšã¯é¿ããŠãã ãããããã¯ã¡ã¢ãªãªãŒã¯ãããã©ãŒãã³ã¹ã®åé¡ã«ã€ãªããå¯èœæ§ããããŸããæ¡ä»¶ä»ãããžãã¯ã䜿çšããŠãµãŒããŒäžã§ã¯ãµãã¹ã¯ãªãã·ã§ã³ãç¡å¹ã«ããã¯ã©ã€ã¢ã³ãäžã§ã®ã¿æå¹ã«ããããšãæ€èšããŠãã ããã
3. ãšã©ãŒãã³ããªã³ã°
createãsubscribeãgetValueã¡ãœããå
ã«å
ç¢ãªãšã©ãŒãã³ããªã³ã°ãå®è£
ããŠããšã©ãŒãé©åã«åŠçããã¯ã©ãã·ã¥ãé²ããŸãããšã©ãŒãé©åã«ãã°ã«èšé²ããã³ã³ããŒãã³ããå®å
šã«å£ããã®ãé²ãããã«ãã©ãŒã«ããã¯å€ãæäŸããããšãæ€èšããŠãã ãããæœåšçãªäŸå€ãåŠçããããã«`try...catch`ãããã¯ã䜿çšããããšãæ€èšããŠãã ããã
å®è·µäŸ: ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®ã·ããªãª
1. ãªã¢ã«ã¿ã€ã èšèªç¿»èš³ã¢ããªã±ãŒã·ã§ã³
ãŠãŒã¶ãŒãããèšèªã§ããã¹ããå ¥åãããšããããå³åº§ã«å¥ã®èšèªã«ç¿»èš³ãããŠè¡šç€ºããããªã¢ã«ã¿ã€ã 翻蚳ã¢ããªã±ãŒã·ã§ã³ãæ³åããŠã¿ãŠãã ãããã³ã³ããŒãã³ãã¯ã翻蚳ã倿Žããããã³ã«æŽæ°ãçºè¡ãã翻蚳ãµãŒãã¹ããµãã¹ã¯ã©ã€ããããããããŸããããŠãŒã¶ãŒãèšèªãåãæ¿ããéã«ã¢ããªã±ãŒã·ã§ã³ãå¿çæ§ãä¿ã¡ãã¡ã¢ãªãªãŒã¯ãèµ·ãããªãããã«ããããã«ã¯ãé©åãªãµãã¹ã¯ãªãã·ã§ã³ç®¡çãäžå¯æ¬ ã§ãã
ãã®ã·ããªãªã§ã¯ãexperimental_useSubscriptionã䜿çšããŠç¿»èš³ãµãŒãã¹ããµãã¹ã¯ã©ã€ãããã³ã³ããŒãã³ãå
ã®ç¿»èš³æžã¿ããã¹ããæŽæ°ã§ããŸããã¢ã³ãµãã¹ã¯ã©ã€ã颿°ã¯ãã³ã³ããŒãã³ããã¢ã³ããŠã³ãããããšãããŸãã¯ãŠãŒã¶ãŒãå¥ã®èšèªã«åãæ¿ãããšãã«ã翻蚳ãµãŒãã¹ããåæãã責任ãè² ããŸãã
2. ã°ããŒãã«éèããã·ã¥ããŒã
ãªã¢ã«ã¿ã€ã ã®æ ªäŸ¡ãçºæ¿ã¬ãŒããåžå Žãã¥ãŒã¹ã衚瀺ããéèããã·ã¥ããŒãã¯ãããŒã¿ãµãã¹ã¯ãªãã·ã§ã³ã«å€§ããäŸåããŸããã³ã³ããŒãã³ãã¯è€æ°ã®ããŒã¿ã¹ããªãŒã ãåæã«ãµãã¹ã¯ã©ã€ããããããããŸãããéå¹ççãªãµãã¹ã¯ãªãã·ã§ã³ç®¡çã¯ãç¹ã«ãããã¯ãŒã¯é å»¶ã倧ããããŸãã¯åž¯åå¹ ãéãããŠããå°åã§ãé倧ãªããã©ãŒãã³ã¹åé¡ã«ã€ãªããå¯èœæ§ããããŸãã
experimental_useSubscriptionã䜿çšããããšã§ãåã³ã³ããŒãã³ãã¯é¢é£ããããŒã¿ã¹ããªãŒã ããµãã¹ã¯ã©ã€ãããã³ã³ããŒãã³ãã衚瀺ãããªããªã£ããšãããŠãŒã¶ãŒãããã·ã¥ããŒãã®å¥ã®ã»ã¯ã·ã§ã³ã«ç§»åãããšãã«ããµãã¹ã¯ãªãã·ã§ã³ãé©åã«ã¯ãªãŒã³ã¢ãããããããšãä¿èšŒã§ããŸããããã¯ã倧éã®ãªã¢ã«ã¿ã€ã ããŒã¿ãæ±ã£ãŠããå Žåã§ããã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãç¶æããããã«éåžžã«éèŠã§ãã
3. å ±åããã¥ã¡ã³ãç·šéã¢ããªã±ãŒã·ã§ã³
è€æ°ã®ãŠãŒã¶ãŒãåãããã¥ã¡ã³ããåæã«ç·šéã§ããå ±åããã¥ã¡ã³ãç·šéã¢ããªã±ãŒã·ã§ã³ã§ã¯ããªã¢ã«ã¿ã€ã ã®æŽæ°ãšåæãå¿ èŠã«ãªããŸããã³ã³ããŒãã³ãã¯ä»ã®ãŠãŒã¶ãŒã«ãã£ãŠè¡ããã倿Žããµãã¹ã¯ã©ã€ããããããããŸããããã®ã·ããªãªã§ã®ã¡ã¢ãªãªãŒã¯ã¯ãããŒã¿ã®äžè²«æ§ã®æ¬ åŠãã¢ããªã±ãŒã·ã§ã³ã®äžå®å®æ§ã«ã€ãªããå¯èœæ§ããããŸãã
experimental_useSubscriptionã䜿çšããŠããã¥ã¡ã³ãã®å€æŽããµãã¹ã¯ã©ã€ãããããã«å¿ããŠã³ã³ããŒãã³ãã®ã³ã³ãã³ããæŽæ°ã§ããŸããã¢ã³ãµãã¹ã¯ã©ã€ã颿°ã¯ããŠãŒã¶ãŒãããã¥ã¡ã³ããéãããšãããŸãã¯ç·šéããŒãžããé¢ãããšãã«ãããã¥ã¡ã³ãåæãµãŒãã¹ããåæãã責任ãè² ããŸããããã«ãããè€æ°ã®ãŠãŒã¶ãŒãåãããã¥ã¡ã³ãã§å
±åäœæ¥ããŠããå Žåã§ããã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ãšä¿¡é Œæ§ãç¶æãããŸãã
çµè«
Reactã®experimental_useSubscriptionããã¯ã¯ãReactã³ã³ããŒãã³ãå
ã§ãµãã¹ã¯ãªãã·ã§ã³ã管çããããã®åŒ·åã§å¹ççãªæ¹æ³ãæäŸããŸããã¡ã¢ãªç®¡çã®ååãçè§£ãããã®ããã°èšäºã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãã¡ã¢ãªãªãŒã¯ã广çã«é²ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããå
ç¢ã§ã¹ã±ãŒã©ãã«ãªReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšãã§ããŸããåžžã«ã¢ã³ãµãã¹ã¯ã©ã€ã颿°ãè¿ããåçãªããŒã¿ãœãŒã¹ãæ
éã«æ±ããã¯ããŒãžã£ã®çœ ã«æ³šæãããµãã¹ã¯ãªãã·ã§ã³ããžãã¯ãæé©åããã¡ã¢ãªãããã¡ã€ãªã³ã°ã«DevToolsã䜿çšããããšãå¿ããªãã§ãã ãããexperimental_useSubscriptionãé²åãç¶ããã«ã€ããŠããã®æ©èœãšå¶éã«ã€ããŠåžžã«æ
å ±ãåŸãããšããè€éãªããŒã¿ãµãã¹ã¯ãªãã·ã§ã³ã广çã«åŠçã§ãã髿§èœãªReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«éèŠã«ãªããŸããReact 18çŸåšãuseSubscriptionã¯ãŸã å®é𿮵éã§ãããããAPIãšãã®äœ¿çšã«é¢ããææ°ã®æŽæ°ãšæšå¥šäºé
ã«ã€ããŠã¯ãåžžã«å
¬åŒã®Reactããã¥ã¡ã³ããåç
§ããŠãã ããã