æè¿ãNode.js ã® EventEmitter ã¨ããã¤ãã³ãå¦çç¨ã®æ©è½ãç¥ã£ãã®ã§ãReact ã¨çµã¿åããã¦ç°¡åãªå®è£ ãµã³ãã«ã試ãã¦ã¿ã¾ããã
Â
EventEmitter ã¨ã¯
ç¬èªã®ã¤ãã³ããç»é²ãããã®ã¤ãã³ããããªã¬ã¼ãããã¨ãã«ä»»æã®å¦çãå®è¡ãããã¨ãã§ãã¾ãã
Â
emit 㨠on ã使ã£ã¦ã¤ãã³ãã¨ããªã¬ã¼ãããå¦çãç»é²ãã¾ãã
Node.jsã®å ¬å¼ãã¼ã¸ ã§ã¯ä¸è¨ã®ããã«è¨è¼ããã¦ãã¾ãã
emit
 is used to trigger an eventon
 is used to add a callback function that's going to be executed when the event is triggered
ãã®ä»çµã¿ãå©ç¨ãããµã³ãã«ã¨ãã¦ãReact ã§ããã¤ãã®ãã¼ã¸ãä½æããåãã¼ã¸ãéãããéã«EventEmitterã®ã¤ãã³ããããªã¬ã¼ããå®è£ ããã¦ã¿ããã¨æãã¾ãã
Â
ç°å¢æ§ç¯
ä¸è¨ã®ã³ãã³ãã§ç°å¢ãæ¤è¨¼ç¨ããã¸ã§ã¯ããä½æãã¾ãã
npx create-react-app event-emitter --template typescript
ãã¨ã®æé ã§ã«ã¼ãã£ã³ã°ã®æ©è½ãå©ç¨ããã®ã§ãreact-router-dom ãä¾åé¢ä¿ã«è¿½å ãã¾ãã
npm i react-router-dom
Â
ç»é¢ä½æ
æ¤è¨¼ç¨ããã¸ã§ã¯ããä½æã§ããã®ã§ãããã¤ãç»é¢ãä½æãã¾ãã
cd event-emitter
mkdir src/component
touch src/component/page1.tsx
touch src/component/page2.tsx
touch src/component/page3.tsx
touch src/component/top.tsx
Â
ããããã®ãã¡ã¤ã«ã®ä¸èº«ã¯ä¸è¨ã§ãã
page1.tsx
page2.tsx
page3.tsx
top.tsx
Â
ããããã®ç»é¢ã«é·ç§»ã§ããããã«ãã«ã¼ãã£ã³ã°ãå®ç¾©ãã¾ãã
App.tsx
Â
ããã¾ã§ã§ãä¸è¨ã®ã³ãã³ãã§ã¢ããªãèµ·åãã¦ã¿ã¾ãã
npm start
ãããç»é¢è¡¨ç¤º
Page1表示
ä¸è¨ãç»é¢è¡¨ç¤ºãããããããã®ãã¼ã¸ã«é·ç§»ã§ãã¾ãã
Â
EventEmitterã§ä»»æã®ã¤ãã³ãããã³ããªã³ã°ãã
ãããã EventEmitterã使ç¨ãã¦ã¿ã¾ãã
ä»åã¯ãåãã¼ã¸ãéãããéã«ããã®ãã¼ã¸å称ãã³ã³ã½ã¼ã«ã«åºåãããããªã¤ãã³ãå¦çãå®ç¾©ãã¦ã¿ããã¨æãã¾ãã
Â
ã¾ãã¯ä¸è¨ã®ã³ãã³ãã§EventEmitterãä¾åé¢ä¿ã«è¿½å ãã¾ãã
ï¼EventEmitterã¯è²ã ã¨æ¹è¯ãéãããã¦ãç¾å¨ã¯ãã¼ã¸ã§ã³3ãææ°ã®æ¨¡æ§ãï¼
npm i eventemitter3
mkdir src/eventContext
touch src/eventContext/EventContext.ts
Â
EventContext 㧠EventEmitter ãçæããuseContext ããã¯ã使ããåã³ã³ãã¼ãã³ãããã°ãã¼ãã«ã«åç §ã§ããæ§æã¨ãã¾ããã
EventContext.ts
Â
ãã®EventContext ã§å ¨ä½ãã©ãããããã¨ã§ãé ä¸ã®ã³ã³ãã¼ãã³ãã§EventEmitter ãåç §ã§ããããã«ãªãã¾ããApp.tsx ãä¸è¨ã®ããã«æ¸ãæãã¾ãã
App.tsx
Â
åã³ã³ãã¼ãã³ãã®ã¬ã³ããªã³ã°ãå®äºããããEventEmitter ã«ã¤ãã³ããçºè¡ããããã«ä¿®æ£ãã¾ãã
Â
Page1.tsx
Â
Page2.tsx
Page3.tsx
Â
ããã§å®æã§ãã
npm start
ã§ã¢ããªãç«ã¡ä¸ãã¾ãã
Â
ããããã¼ã¸ãããPage1, Page2, Page3 ã«ç»é¢é·ç§»ãã¦ãã³ã³ã½ã¼ã«ã«ä¸è¨ã®ã¡ãã»ã¼ã¸ã表示ããããã¨ã確èªã§ãã¾ãã
Â
Â
以ä¸ãµã³ãã«ã«ãªãã¾ãã
ä»åã¯ãã ã³ã³ã½ã¼ã«ã«åºåããã ãã§ããããåç»é¢ãéãããGoogle Analytics ã«éä¿¡ãã¦ç»é¢è¡¨ç¤ºæ°ãè¨æ¸¬ããããã¨ã©ã¼ãçºçãããéç¥ãããããªã© EventEmitter ãæ´»ç¨ãããã¨ã§è²ã ã§ãããã«æãã¾ããã
Â
Â