Reactã®experimental_useSubscriptionããã¯ã䜿çšããŠããŒã¿ãµãã¹ã¯ãªãã·ã§ã³ãæé©åãã髿§èœã§ã°ããŒãã«ã«ã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®è©³çްã¬ã€ãã
React experimental_useSubscription管çãšã³ãžã³ïŒã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³åããµãã¹ã¯ãªãã·ã§ã³æé©å
Reactãšã³ã·ã¹ãã ã¯çµ¶ããé²åããŠãããéçºè
ã«ã¯ããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ã«åªããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®æ°ããããŒã«ãšæè¡ãæäŸãããŠããŸãããã®ãããªé²æ©ã®äžã€ããReactã³ã³ããŒãã³ãã§ããŒã¿ãµãã¹ã¯ãªãã·ã§ã³ã管çããããã®åŒ·åãªã¡ã«ããºã ãæäŸããexperimental_useSubscription
ããã¯ã§ãããã®ããã¯ã¯ãŸã å®éšçã§ãããç¹ã«ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãµãŒãã¹ãæäŸããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠæçãªãé«åºŠãªãµãã¹ã¯ãªãã·ã§ã³æé©åæŠç¥ãå¯èœã«ããŸãã
ãµãã¹ã¯ãªãã·ã§ã³æé©åã®å¿ èŠæ§ãçè§£ãã
çŸä»£ã®Webã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã³ã³ããŒãã³ãã¯æéãšãšãã«å€åããå¯èœæ§ã®ããããŒã¿ãœãŒã¹ããµãã¹ã¯ã©ã€ãããå¿ èŠããããŸãããããã®ããŒã¿ãœãŒã¹ã¯ãåçŽãªã€ã³ã¡ã¢ãªã¹ãã¢ãããGraphQLãRESTãªã©ã®æè¡ãä»ããŠã¢ã¯ã»ã¹ãããè€éãªããã¯ãšã³ãAPIãŸã§å€å²ã«ããããŸããæé©åãããŠããªããµãã¹ã¯ãªãã·ã§ã³ã¯ãããã€ãã®ããã©ãŒãã³ã¹åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãïŒ
- äžèŠãªåã¬ã³ããªã³ã°ïŒ ãµãã¹ã¯ã©ã€ãããããŒã¿ã倿ŽãããŠããªãã«ããããããã³ã³ããŒãã³ããåã¬ã³ããªã³ã°ãããCPUãµã€ã¯ã«ã®ç¡é§é£ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®äœäžã«ã€ãªãããŸãã
- ãããã¯ãŒã¯ã®éè² è·ïŒ å¿ èŠä»¥äžã«é »ç¹ã«ããŒã¿ããã§ãããã垯åå¹ ãæ¶è²»ããç¹ã«ã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ãéãããŠãããé«äŸ¡ãªå°åã§ã¯ãããé«ãã³ã¹ããçºçããå¯èœæ§ããããŸãã
- UIã®ãžã£ã³ã¯ïŒ é »ç¹ãªããŒã¿æŽæ°ãã¬ã€ã¢ãŠãã·ãããèŠèŠçãªã«ã¯ã€ããåŒãèµ·ãããç¹ã«äœã¹ããã¯ã®ããã€ã¹ãäžå®å®ãªãããã¯ãŒã¯æ¥ç¶ã®å°åã§é¡èã«ãªããŸãã
ãããã®åé¡ã¯ããããã¯ãŒã¯ç¶æ³ãããã€ã¹ã®èœåããŠãŒã¶ãŒã®æåŸ
ãç°ãªãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã察象ãšããå Žåã«å¢å¹
ãããŸããexperimental_useSubscription
ã¯ãéçºè
ãããŒã¿å€æŽã«å¿ããŠã³ã³ããŒãã³ãããã€ãã©ã®ããã«æŽæ°ãããããæ£ç¢ºã«å¶åŸ¡ã§ããããã«ããããšã§ã解決çãæäŸããŸãã
experimental_useSubscriptionã®ç޹ä»
Reactã®å®éšçãã£ãã«ã§å©çšå¯èœãªexperimental_useSubscription
ããã¯ã¯ããµãã¹ã¯ãªãã·ã§ã³ã®æåããã现ããå¶åŸ¡ããŸããããã«ãããéçºè
ã¯ããŒã¿ãœãŒã¹ããããŒã¿ãèªã¿åãæ¹æ³ãšãæŽæ°ãããªã¬ãŒããæ¹æ³ãå®çŸ©ã§ããŸãããã®ããã¯ã¯ã以äžã®äž»èŠãªããããã£ãæã€èšå®ãªããžã§ã¯ããåãåããŸãïŒ
- dataSource: ãµãã¹ã¯ã©ã€ãããããŒã¿ãœãŒã¹ãããã¯åçŽãªãªããžã§ã¯ããããRelayãApollo Clientã®ãããªè€éãªããŒã¿ãã§ããã©ã€ãã©ãªãŸã§äœã§ãæ§ããŸããã
- getSnapshot: ããŒã¿ãœãŒã¹ããç®çã®ããŒã¿ãèªã¿åã颿°ããã®é¢æ°ã¯çŽç²ã§ãå®å®ããå€ïŒäŸïŒããªããã£ãå€ãã¡ã¢åããããªããžã§ã¯ãïŒãè¿ãå¿ èŠããããŸãã
- subscribe: ããŒã¿ãœãŒã¹ã®å€æŽããµãã¹ã¯ã©ã€ãããã¢ã³ãµãã¹ã¯ã©ã€ã颿°ãè¿ã颿°ãsubscribe颿°ã¯ãããŒã¿ãœãŒã¹ã倿Žããããã³ã«åŒã³åºãããã¹ãã³ãŒã«ããã¯ãåãåããŸãã
- getServerSnapshot (ä»»æ): ãµãŒããŒãµã€ãã¬ã³ããªã³ã°äžã«ã®ã¿åæã¹ãããã·ã§ãããååŸããããã«äœ¿çšããã颿°ã
ããŒã¿ã®èªã¿åãããžãã¯(getSnapshot
)ããµãã¹ã¯ãªãã·ã§ã³ã¡ã«ããºã (subscribe
)ããåé¢ããããšã§ãexperimental_useSubscription
ã¯éçºè
ãé«åºŠãªæé©åæè¡ãå®è£
ã§ããããã«ããŸãã
äŸïŒexperimental_useSubscriptionã«ãããµãã¹ã¯ãªãã·ã§ã³ã®æé©å
Reactã³ã³ããŒãã³ãã«ãªã¢ã«ã¿ã€ã ã®çºæ¿ã¬ãŒãã衚瀺ããå¿ èŠãããã·ããªãªãèããŠã¿ãŸãããããããã®ã¬ãŒããæäŸããä»®æ³ã®ããŒã¿ãœãŒã¹ã䜿çšããŸãã
```javascript import { experimental_useSubscription as useSubscription } from 'react'; import { useState, useEffect } from 'react'; // ä»®æ³ã®ããŒã¿ãœãŒã¹ const currencyDataSource = { rates: { USD: 1, EUR: 0.9, GBP: 0.8 }, listeners: [], subscribe(listener) { this.listeners.push(listener); return () => { this.listeners = this.listeners.filter(l => l !== listener); }; }, updateRates() { // 2ç§ããšã«ã¬ãŒãã®æŽæ°ãã·ãã¥ã¬ãŒã setInterval(() => { this.rates = { USD: 1, EUR: 0.9 + (Math.random() * 0.05 - 0.025), // EURããããã«å€åããã GBP: 0.8 + (Math.random() * 0.05 - 0.025) // GBPããããã«å€åããã }; this.listeners.forEach(listener => listener()); }, 2000); } }; currencyDataSource.updateRates(); function CurrencyRate({ currency }) { const rate = useSubscription({ dataSource: currencyDataSource, getSnapshot: () => currencyDataSource.rates[currency], subscribe: currencyDataSource.subscribe.bind(currencyDataSource), }); return ({currency}: {rate.toFixed(2)}
); } function CurrencyRates() { return (Currency Exchange Rates
ãã®äŸã§ã¯ïŒ
currencyDataSource
ã¯çºæ¿ã¬ãŒããæäŸããããŒã¿ãœãŒã¹ãã·ãã¥ã¬ãŒãããŸããgetSnapshot
ã¯èŠæ±ãããé貚ã®ç¹å®ã®ã¬ãŒããæœåºããŸããsubscribe
ã¯ããŒã¿ãœãŒã¹ã«ãªã¹ããŒãç»é²ããã¬ãŒããæŽæ°ããããã³ã«åã¬ã³ããªã³ã°ãããªã¬ãŒããŸãã
ãã®åºæ¬çãªå®è£
ã¯æ©èœããŸãããã³ã³ããŒãã³ããç¹å®ã®1ã€ã®ã¬ãŒãã«ããé¢å¿ããªãå Žåã§ããããããã®é貚ã¬ãŒãã倿Žããããã³ã«CurrencyRate
ã³ã³ããŒãã³ããåã¬ã³ããªã³ã°ããŸããããã¯éå¹çã§ããã»ã¬ã¯ã¿ãŒé¢æ°ã®ãããªæè¡ã䜿ã£ãŠãããæé©åã§ããŸãã
æé©åæè¡
1. ã»ã¬ã¯ã¿ãŒé¢æ°
ã»ã¬ã¯ã¿ãŒé¢æ°ã䜿çšãããšãããŒã¿ãœãŒã¹ããå¿ èŠãªããŒã¿ã®ã¿ãæœåºã§ããŸããããã«ãããã³ã³ããŒãã³ããäŸåããç¹å®ã®ããŒã¿ã倿Žããããšãã«ã®ã¿æŽæ°ãããããã«ããããšã§ãäžèŠãªåã¬ã³ããªã³ã°ã®å¯èœæ§ãæžãããŸããç§ãã¡ã¯æ¢ã«äžèšã®`getSnapshot`颿°ã§ã`currencyDataSource.rates`ãªããžã§ã¯ãå šäœã§ã¯ãªã`currencyDataSource.rates[currency]`ãéžæããããšã§ãããå®è£ ããŠããŸãã
2. ã¡ã¢å
useMemo
ã®äœ¿çšãReselectã®ãããªã©ã€ãã©ãªãªã©ã®ã¡ã¢åæè¡ã¯ãgetSnapshot
颿°å
ã§ã®äžèŠãªèšç®ãé²ãããšãã§ããŸããããã¯ãgetSnapshot
å
ã®ããŒã¿å€æãé«ã³ã¹ãã§ããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
äŸãã°ãgetSnapshot
ãããŒã¿ãœãŒã¹å
ã®è€æ°ã®ããããã£ã«åºã¥ãè€éãªèšç®ã䌎ãå Žåãé¢é£ããäŸåé¢ä¿ã倿Žãããªãéãåèšç®ãé¿ããããã«çµæãã¡ã¢åããããšãã§ããŸãã
3. ãããŠã³ã¹ãšã¹ããããªã³ã°
é »ç¹ãªããŒã¿æŽæ°ãããã·ããªãªã§ã¯ããããŠã³ã¹ãã¹ããããªã³ã°ã«ãã£ãŠã³ã³ããŒãã³ããåã¬ã³ããªã³ã°ãããã¬ãŒããå¶éã§ããŸãããããŠã³ã¹ã¯ãäžå®æéã®éã¢ã¯ãã£ãç¶æ ã®åŸã«ã®ã¿ã³ã³ããŒãã³ããæŽæ°ãããããšãä¿èšŒããã¹ããããªã³ã°ã¯æŽæ°ã¬ãŒããæå€§é »åºŠã«å¶éããŸãã
ãããã®æè¡ã¯ããŠãŒã¶ãŒãã¿ã€ãã³ã°ãçµãããŸã§æ€çŽ¢çµæã®æŽæ°ãé ããããæ€çŽ¢å ¥åãã£ãŒã«ãã®ãããªã·ããªãªã§åœ¹ç«ã¡ãŸãã
4. æ¡ä»¶ä»ããµãã¹ã¯ãªãã·ã§ã³
æ¡ä»¶ä»ããµãã¹ã¯ãªãã·ã§ã³ã䜿çšãããšãç¹å®ã®æ¡ä»¶ã«åºã¥ããŠãµãã¹ã¯ãªãã·ã§ã³ãæå¹ãŸãã¯ç¡å¹ã«ã§ããŸããããã¯ãã³ã³ããŒãã³ããç¹å®ã®ç¶æ³äžã§ã®ã¿ããŒã¿ããµãã¹ã¯ã©ã€ãããå¿ èŠãããã·ããªãªã§ããã©ãŒãã³ã¹ãæé©åããã®ã«åœ¹ç«ã¡ãŸããäŸãã°ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã»ã¯ã·ã§ã³ãã¢ã¯ãã£ãã«è¡šç€ºããŠãããšãã«ã®ã¿ããªã¢ã«ã¿ã€ã æŽæ°ããµãã¹ã¯ã©ã€ãããããšãã§ããŸãã
5. ããŒã¿ãã§ããã©ã€ãã©ãªãšã®çµ±å
experimental_useSubscription
ã¯ã以äžã®ãããªäººæ°ã®ããŒã¿ãã§ããã©ã€ãã©ãªãšã·ãŒã ã¬ã¹ã«çµ±åã§ããŸãïŒ
- Relay: Relayã¯å
ç¢ãªããŒã¿ãã§ãããšãã£ãã·ã³ã°å±€ãæäŸããŸãã
experimental_useSubscription
ã䜿çšãããšãRelayã®ã¹ãã¢ããµãã¹ã¯ã©ã€ãããããŒã¿ã倿Žããããšå¹ççã«ã³ã³ããŒãã³ããæŽæ°ã§ããŸãã - Apollo Client: Relayãšåæ§ã«ãApollo Clientã¯ãã£ãã·ã³ã°ãšããŒã¿ç®¡çæ©èœãåããå
æ¬çãªGraphQLã¯ã©ã€ã¢ã³ããæäŸããŸãã
experimental_useSubscription
ã䜿çšããŠApollo Clientã®ãã£ãã·ã¥ããµãã¹ã¯ã©ã€ãããGraphQLã¯ãšãªã®çµæã«åºã¥ããŠæŽæ°ãããªã¬ãŒã§ããŸãã - TanStack Query (æ§React Query): TanStack Queryã¯ãReactã§éåæããŒã¿ããã§ããããã£ãã·ã¥ãæŽæ°ããããã®åŒ·åãªã©ã€ãã©ãªã§ããTanStack Queryã«ã¯ã¯ãšãªçµæããµãã¹ã¯ã©ã€ãããããã®ç¬èªã®ã¡ã«ããºã ããããŸããã
experimental_useSubscription
ã¯é«åºŠãªãŠãŒã¹ã±ãŒã¹ãæ¢åã®ãµãã¹ã¯ãªãã·ã§ã³ããŒã¹ã®ã·ã¹ãã ãšã®çµ±åã«å©çšã§ããå¯èœæ§ããããŸãã - SWR: SWRã¯ãªã¢ãŒãããŒã¿ãã§ããçšã®è»œéã©ã€ãã©ãªã§ããããŒã¿ããã§ããããããã¯ã°ã©ãŠã³ãã§èªåçã«åæ€èšŒããããã®ã·ã³ãã«ãªAPIãæäŸããŸãã
experimental_useSubscription
ã䜿çšããŠSWRã®ãã£ãã·ã¥ããµãã¹ã¯ã©ã€ãããããŒã¿ã倿Žããããšãã«æŽæ°ãããªã¬ãŒã§ããŸãã
ãããã®ã©ã€ãã©ãªã䜿çšããå ŽåãdataSource
ã¯éåžžã©ã€ãã©ãªã®ã¯ã©ã€ã¢ã³ãã€ã³ã¹ã¿ã³ã¹ã§ãããgetSnapshot
颿°ã¯ã¯ã©ã€ã¢ã³ãã®ãã£ãã·ã¥ããé¢é£ããŒã¿ãæœåºããŸããsubscribe
颿°ã¯ãããŒã¿ã®å€æŽéç¥ãåãåãããã«ã¯ã©ã€ã¢ã³ãã«ãªã¹ããŒãç»é²ããŸãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«ããããµãã¹ã¯ãªãã·ã§ã³æé©åã®å©ç¹
ããŒã¿ãµãã¹ã¯ãªãã·ã§ã³ãæé©åãããšãç¹ã«ã°ããŒãã«ãªãŠãŒã¶ãŒããŒã¹ã察象ãšããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã倧ããªå©ç¹ãåŸãããŸãïŒ
- ããã©ãŒãã³ã¹ã®åäžïŒ åã¬ã³ããªã³ã°ãšãããã¯ãŒã¯ãªã¯ãšã¹ãã®åæžã¯ãèªã¿èŸŒã¿æéã®ççž®ãšããå¿çæ§ã®é«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ãªãããã€ã³ã¿ãŒãããæ¥ç¶ãé ãå°åã®ãŠãŒã¶ãŒã«ãšã£ãŠéèŠã§ãã
- 垯åå¹ æ¶è²»ã®åæžïŒ äžèŠãªããŒã¿ãã§ãããæå°éã«æããããšã§åž¯åå¹ ãç¯çŽããå€ãã®çºå±éäžåœã§äžè¬çãªãããŒã¿ãã©ã³ãéãããŠãããŠãŒã¶ãŒã«ãšã£ãŠã³ã¹ãåæžãšããè¯ãäœéšã«ã€ãªãããŸãã
- ããããªãŒå¯¿åœã®åäžïŒ æé©åããããµãã¹ã¯ãªãã·ã§ã³ã¯CPU䜿çšéãåæžããã¢ãã€ã«ããã€ã¹ã®ããããªãŒå¯¿åœãå»¶ã°ããŸããããã¯ãé»åã¢ã¯ã»ã¹ãäžå®å®ãªå°åã®ãŠãŒã¶ãŒã«ãšã£ãŠéèŠãªèæ ®äºé ã§ãã
- ã¹ã±ãŒã©ããªãã£ïŒ å¹ççãªãµãã¹ã¯ãªãã·ã§ã³ã«ãããã¢ããªã±ãŒã·ã§ã³ã¯ããã©ãŒãã³ã¹ãäœäžãããããšãªã倿°ã®åæãŠãŒã¶ãŒãåŠçã§ããããã«ãªããå€åãããã©ãã£ãã¯ãã¿ãŒã³ãæã€ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ã§ãã
- ã¢ã¯ã»ã·ããªãã£ïŒ ããã©ãŒãã³ã¹ãé«ãå¿çæ§ã®è¯ãã¢ããªã±ãŒã·ã§ã³ã¯ãé害ãæã€ãŠãŒã¶ãŒãç¹ã«ã«ã¯ã€ãããé ãã€ã³ã¿ãŒãã§ãŒã¹ã«ãã£ãŠæªåœ±é¿ãåããå¯èœæ§ã®ããæ¯æŽæè¡ã䜿çšããŠãããŠãŒã¶ãŒã®ã¢ã¯ã»ã·ããªãã£ãåäžãããŸãã
ã°ããŒãã«ãªèæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
ãµãã¹ã¯ãªãã·ã§ã³æé©åæè¡ãå®è£ ããéã¯ã以äžã®ã°ããŒãã«ãªèŠå ãèæ ®ããŠãã ããïŒ
- ãããã¯ãŒã¯ç¶æ³ïŒ æ€åºããããããã¯ãŒã¯é床ãšé å»¶ã«åºã¥ããŠãµãã¹ã¯ãªãã·ã§ã³æŠç¥ãé©å¿ãããŸããäŸãã°ãæ¥ç¶ãæªãå°åã§ã¯æŽæ°é »åºŠãæžããããšãã§ããŸãããããã¯ãŒã¯ç¶æ³ãæ€åºããããã«Network Information APIã®äœ¿çšãæ€èšããŠãã ããã
- ããã€ã¹ã®èœåïŒ é«ã³ã¹ããªèšç®ãæå°éã«æããæŽæ°é »åºŠãæžããããšã§ãäœã¹ããã¯ã®ããã€ã¹åãã«æé©åããŸããããã€ã¹ã®èœåãç¹å®ããããã«æ©èœæ€åºã®ãããªæè¡ã䜿çšããŠãã ããã
- ããŒã¿ã®ããŒã«ã©ã€ãŒãŒã·ã§ã³ïŒ ããŒã¿ãããŒã«ã©ã€ãºããããŠãŒã¶ãŒã®åžæããèšèªãšé貚ã§è¡šç€ºãããããã«ããŸããããŒã«ã©ã€ãŒãŒã·ã§ã³ãåŠçããããã«åœéåïŒi18nïŒã©ã€ãã©ãªãšAPIã䜿çšããŠãã ããã
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNsïŒïŒ å°ççã«åæ£ãããµãŒããŒããéçã¢ã»ãããé ä¿¡ããããã«CDNãå©çšããäžçäžã®ãŠãŒã¶ãŒã®é å»¶ãæžãããèªã¿èŸŒã¿æéãæ¹åããŸãã
- ãã£ãã·ã³ã°æŠç¥ïŒ ãããã¯ãŒã¯ãªã¯ãšã¹ãã®æ°ãæžããããã«ç©æ¥µçãªãã£ãã·ã³ã°æŠç¥ãå®è£ ããŸããHTTPãã£ãã·ã³ã°ããã©ãŠã¶ã¹ãã¬ãŒãžããµãŒãã¹ã¯ãŒã«ãŒãªã©ã®æè¡ã䜿çšããŠããŒã¿ãšã¢ã»ããããã£ãã·ã¥ããŸãã
å®è·µçãªäŸãšã±ãŒã¹ã¹ã¿ãã£
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«ããããµãã¹ã¯ãªãã·ã§ã³æé©åã®å©ç¹ã瀺ãããã€ãã®å®è·µçãªäŸãšã±ãŒã¹ã¹ã¿ãã£ãèŠãŠã¿ãŸãããïŒ
- Eã³ããŒã¹ãã©ãããã©ãŒã ïŒ æ±åã¢ãžã¢ã®ãŠãŒã¶ãŒã察象ãšããEã³ããŒã¹ãã©ãããã©ãŒã ã¯ããŠãŒã¶ãŒã補åããŒãžãã¢ã¯ãã£ãã«è¡šç€ºããŠãããšãã«ã®ã¿è£œååšåº«ããŒã¿ããã§ããããããã«ãæ¡ä»¶ä»ããµãã¹ã¯ãªãã·ã§ã³ãå®è£ ããŸãããããã«ããã垯åå¹ ã®æ¶è²»ãå€§å¹ ã«åæžãããã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ãéãããŠãããŠãŒã¶ãŒã®ããŒãžèªã¿èŸŒã¿æéãæ¹åãããŸããã
- éèãã¥ãŒã¹ã¢ããªã±ãŒã·ã§ã³ïŒ äžçäžã®ãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããéèãã¥ãŒã¹ã¢ããªã±ãŒã·ã§ã³ã¯ããªã¢ã«ã¿ã€ã ã®æ ªäŸ¡è¡šç€ºãæé©åããããã«ã¡ã¢åãšãããŠã³ã¹ã䜿çšããŸãããããã«ãããåã¬ã³ããªã³ã°ã®æ°ãæžããUIã®ãžã£ã³ã¯ã鲿¢ããããã¹ã¯ããããšã¢ãã€ã«ããã€ã¹ã®äž¡æ¹ã§ãŠãŒã¶ãŒã«ã¹ã ãŒãºãªäœéšãæäŸãããŸããã
- ãœãŒã·ã£ã«ã¡ãã£ã¢ã¢ããªã±ãŒã·ã§ã³ïŒ ãããœãŒã·ã£ã«ã¡ãã£ã¢ã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã®ãããã£ãŒã«æ å ±ã倿Žããããšãã«ã®ã¿ãé¢é£ãããŠãŒã¶ãŒããŒã¿ãæã€ã³ã³ããŒãã³ããæŽæ°ããããã«ã»ã¬ã¯ã¿ãŒé¢æ°ãå®è£ ããŸãããããã«ãããäžèŠãªåã¬ã³ããªã³ã°ãæžããç¹ã«åŠçèœåãéãããŠããã¢ãã€ã«ããã€ã¹ã§ã®ã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªå¿çæ§ãåäžããŸããã
çµè«
experimental_useSubscription
ããã¯ã¯ãReactã¢ããªã±ãŒã·ã§ã³ã§ããŒã¿ãµãã¹ã¯ãªãã·ã§ã³ãæé©åããããã®åŒ·åãªããŒã«ã»ãããæäŸããŸãããµãã¹ã¯ãªãã·ã§ã³æé©åã®ååãçè§£ããã»ã¬ã¯ã¿ãŒé¢æ°ãã¡ã¢åãæ¡ä»¶ä»ããµãã¹ã¯ãªãã·ã§ã³ã®ãããªæè¡ãé©çšããããšã§ãéçºè
ã¯å Žæããããã¯ãŒã¯ç¶æ³ãããã€ã¹ã®èœåã«é¢ä¿ãªããåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸãã髿§èœã§ã°ããŒãã«ã«ã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããReactãé²åãç¶ããäžã§ããããã®é«åºŠãªæè¡ãæ¢æ±ãæ¡çšããããšã¯ã倿§ã§çžäºæ¥ç¶ãããäžçã®èŠæ±ã«å¿ããçŸä»£çãªWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ãã
ãããªãæ¢æ±
- Reactããã¥ã¡ã³ãïŒ
experimental_useSubscription
ã«é¢ããæŽæ°æ å ±ã«ã€ããŠã¯ãå ¬åŒã®Reactããã¥ã¡ã³ãã«æ³šç®ããŠãã ããã - ããŒã¿ãã§ããã©ã€ãã©ãªïŒ RelayãApollo ClientãTanStack QueryãSWRã®ããã¥ã¡ã³ãã調ã¹ãŠã
experimental_useSubscription
ãšã®çµ±åã«é¢ããã¬ã€ãã³ã¹ãæ¢ããŠãã ããã - ããã©ãŒãã³ã¹ç£èŠããŒã«ïŒ React Profilerããã©ãŠã¶ã®éçºè ããŒã«ãªã©ã®ããŒã«ãå©çšããŠãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ãããµãã¹ã¯ãªãã·ã§ã³æé©åã®å¹æã枬å®ããŠãã ããã
- ã³ãã¥ããã£ãªãœãŒã¹ïŒ ãã©ãŒã©ã ãããã°ããœãŒã·ã£ã«ã¡ãã£ã¢ãéããŠReactã³ãã¥ããã£ãšäº€æµããä»ã®éçºè ã®çµéšããåŠã³ãèªèº«ã®ç¥èŠãå ±æããŠãã ããã