ã©ã¤ãã¨ã¯ã¹ããªã¨ã³ã¹äºæ¥é¨ ã¨ã³ã¸ãã¢ã®é«æ¾(@shimpeiws)ã§ãã
React Conf 2017 ç¾å°ã¬ãã¼ã (1æ¥ç®)ã«å¼ãç¶ããReact Conf 2017 2æ¥ç®ã®æ§åããµã³ãã¼ã®ä¼å ´ããç´æ¥ãå±ããã¾ã!!!
1æ¥ç®ã®ã»ãã·ã§ã³ã®é²ç»ãYouTubeã«ã¢ããããã¦ãã¾ãã!
1æ¥åã1æ¬ã®åç»(8æé25å!)ãªã®ã§è¦ãã®ã«æ°åãããã¾ããã æ¨æ¥ã®ã¬ãã¼ããã¹ã±ã¸ã¥ã¼ã«ãè¦ãªãããæ°ã«ãªãã»ãã·ã§ã³ããã²ãã§ãã¯ãã¦ã¿ã¦ãã ãã!
http://conf.reactjs.org/schedule
- é£äº
- 2æ¥ç®ã®ææ³
- Goodbye Flatland! An introduction to ReactVR and what it means for web developers (Michaela Lehr)
- Realtime React Apps with GraphQL (Robert Zhu)
- Jest Snapshots and Beyond (Neehar Venugopal)
- A Beginner’s Guide to Code Splitting Your React App (Neehar Venugopal)
- Web-Like Development and Release Agility for React Native (Parashuram N)
- React-Storybook: Design, Develop, Document and Debug your React UI components (Marie-Laure Thuret)
- Extensible React (Cameron Westland)
- Taming the Meta-Language (Cheng Lou)
- ããã«ã»QA
é£äº
æé£ + æ¼é£ + ã³ã¼ãã¼ã»è»½é£å®åã§ãã
ãã¹ãã¿ãªãã£ãé«ã!!!



2æ¥ç®ã®ææ³
ReactVRã®ã»ãã·ã§ã³ããå§ã¾ã£ããã¨ãããã1æ¥ç®ã¨æ¯è¼ããã¨ãããããããå ã®æè¡ã«ãã©ã¼ã«ã¹ããã¦ããå°è±¡ãããã¾ããã
Graph QLã§ã®ãªã¢ã«ã¿ã¤ã APIã®æ§ç¯ããReact Storybookã«ããããã¥ã¡ã³ãã¼ã·ã§ã³ãªã©ã解決ãããã¨ãã¦ããåé¡ã®æ¹åæ§ã¯éãã¾ãããReactã使ã£ããããã¯ãããã¼ã éçºã䏿©å ã«é²ãããã¨ããåãã ã¨æãã¾ãã
2æ¥éãéãã¦ãReactã®éçºã®ä¸å¿ãããã³ãã¥ããã£ã®æ§åã»å¨è¾ºãã¸ãã¹ã¾ã§ãèã§æããããäºããç¾å°ã«ããä¸çªã®åç©«ã§ããã
ããããã¯åã»ãã·ã§ã³ã®æ¦è¦ã¨ã¡ã¢ã§ãã
Goodbye Flatland! An introduction to ReactVR and what it means for web developers (Michaela Lehr)
æ¦è¦
- VRã®ã³ã³ã»ãããä»çµã¿
- ReactVRã®æ¦è¦ã¨ã³ã¼ãä¾
- UXãã¶ã¤ãã¼ã®è¦³ç¹ããVRã®å¯è½æ§ããã®æã«èæ
®ãã¹ãäºæã«ã¤ãã¦è¿°ã¹ããã¦ãã
- “VRã¯ã¨ã¦ãé åçã ãã©ãååã«ã¦ã¼ã¶ãã±ã¢ãã¦ãããªããã°ãªããªã"ã¨ãã観ç¹ãçµå§ä¸è²«ãã¦ãã
Thank you all for listening! ð Here are my slides: https://t.co/3HPeRao3zz #reactconf #webvr
— Michaela (@FischaelaMeer) 2017å¹´3æ14æ¥
ã¡ã¢
- VRã¯ãã¯ããã¸ã¼ã¨ã®é¢ããæ¹ãå¤ãã¾ã
- Stereoscopic Imagesã¨ãã¦ã¼ã¶ã®å転ãç§»åã®ã»ã³ãµãªã³ã°ãåããããã¨ã«ãããVRã¯å®ç¾ããã
- ã¢ãã¤ã«ç«¯æ«ã§ã¯æ ãããããVRã§ã¯ã³ã³ãã³ãã®ä¸ã«ã¦ã¼ã¶ãããæã
- Goodbye, UX metaphor
- ä¾ãã°ç»åã®ã£ã©ãªã¼ãä½ãã¨ãã¦ããUXçãªæ½è±¡ã¯ä¸è¦ã§ãå®éçãªã®ã£ã©ãªã¼ãVR空éã®ä¸ã«ä½ããã¨ãã§ãã
- Goodbye, UX metaphor
- ReactVRã®æ¦è¦
- å æºãUI(ãã¿ã³ãªã©)ãReactã®ã³ã³ãã¼ãã³ãã¨ãã¦æä¾ããã¦ãã
- Flex Boxã®ã¬ã¤ã¢ã¦ãã使ãã (
flexDirection: 'row'ã®ããã«) - Animated APIããããã¢ãã¡ã¼ã·ã§ã³ããã
- VRã«ãããUXãã¶ã¤ã³
- ã¦ã¼ã¶ã®ææå¿ãããã£ã¦ã¯ãããªã
- æ£ããã¹ã±ã¼ã«ã使ããã¨
- ãã¬ã¼ã ã¬ã¼ãã¯é«ãä¿ã¤ãã¨
- åºå®çããªãã©ã¼ã«ã¹ä½ç½®ãè¨ãããã¨
- ãªã¢ã«æåãããæ½è±¡çãªãã¶ã¤ã³ãè¯ã
Realtime React Apps with GraphQL (Robert Zhu)
æ¦è¦
- Facebookã®ã¨ã³ã¸ãã¢
- ãªããªã¢ã«ã¿ã¤ã ã«ãããã®ã?ãã©ããã£ã¦ããã®ã?ãä»å¾ã©ããªãã®ã?
- GraphQLã®Subscriptionã«ã¤ãã¦ã主ãªãã¼ãã以ä¸ã¯é¢é£ããããªè³æãéãã
ã¡ã¢
- ä¾ãã°Facebook Messangerãããããªã©ã夿´ããã£ãå ´åã«ã¯ãã ã¡ã«ç»é¢ãæ´æ°ããã
- ãªã¢ã«ã¿ã¤ã ãªAPIã«ã¯Pullã¨Pushããã
- Pull -> ãã¼ãªã³ã°
- Push -> Live Query
- ä¾ãã°ã¡ã¼ã«ã¢ããªã§æªèªã®ã¡ãã»ã¼ã¸ãã«ã¦ã³ããããæ
- ãã¼ãªã³ã°
- ç¡é§ãªéä¿¡ãå¤ããªã£ã¦ã¤ãã¤ã
- åç´ã§statelessã§ãããã¿ã¤ãããã©ã¼ã«ããã¯ç¨ã«ã¯æç¨
- statefullã«ãã¦pushããã°æé©åã§ãã
- éè¦ãªã¡ã¼ã«ãåãåã£ãæã ããã¡ãã»ã¼ã¸æ°ãã«ã¦ã³ããªã©ãå¯è½
- ãã¼ãªã³ã°
- ãªã¢ã«ã¿ã¤ã APIã®è¨è¨
- GraphQL
- GraphQLã¯"Wish Driven Design"
- ã¯ã©ã¤ã¢ã³ãããã¯ã¬ã¹ãã³ã¹ã®ãã¼ã ãããªã¯ã¨ã¹ããããã¨ããã®ãGraphQLã®ã¯ã¨ãªã®ã¤ã¡ã¼ã¸
- GraphQLãå¤ãã»ãããã¦è¿ãã¦ããã
- Demo
- GraphQLã®Subscriptionã使ã£ã¦å®è£ ãããã¡ã¼ã«ããã¯ã¹ã¢ããªã®ãã¢
- ã³ã¼ãã®ã¤ã¡ã¼ã¸ã¨ãã¦ã¯ä»¥ä¸ã®ãããªæãã ã£ã
const listen = () => {
const sub = new Subscription();
sub.subscribe(myCallBack);
}
const myCallBack = (Payloads) => {
console.info('Callback', Payloads);
}
Jest Snapshots and Beyond (Neehar Venugopal)
æ¦è¦
- Dockerã®ããã³ãã¨ã³ãã¨ã³ã¸ãã¢
- Jestã§Snapshotsã使ã£ã¦ãã¹ããããã
Here are the slides for my Jest snapshot talk, in case anyone is interested https://t.co/38qMj431yi #reactconf
— Rogelio Guzman (@rogeliog) 2017å¹´3æ14æ¥
ã¡ã¢
- ãã¹ãã®ææ³ãèããã®ã好ã
- å°ãªãå´åã§ãã£ã¨ãããããã¹ããããã¨æã£ã¦ãã
- 2016å¹´ããJestã使ã£ã¦ãããã·ã³ãã«ã§è¯ã
- Jestã§è¶³ãç®é¢æ°ã®ãã¹ããæ¸ãã¦ã¿ã
- watchã¢ã¼ãããã
- Emoji Cinema(inputã®å
¥åæåãDBã«ãããããã¨ãEmojiã®ä¸è¦§ãè¿ãã¢ããªã±ã¼ã·ã§ã³)ãã©ããã£ã¦ãã¹ããã?
- console.logã§emojiãåºåãã¦ãã¹ãã³ã¼ãã«ã³ããããã¨ãã¹ãã¯éããã©…
- æåã®ããã»ã¹ãå¤ã
- å¤åã«æè»ã§ã¯ãªã
- ã¡ã³ããã³ã¹ãè¾ã
- ããã§Snapshot Testing
- è¶³ãç®é¢æ°ã®ä¾ãªãã°ããã¹ãã以ä¸ã®ããã«æ¸ãæãã
- Before:
expect(sum(1,2)).toEq(3) - After:
expect(sum(1,2)).toMatchSnapShot()
- Before:
- ããæç¹ã®å®è¡çµæãsnapshot(ãã¡ã¤ã«ã¨ãã¦åºåããã)ãã¦ããã¦ãããã¨åãçµæãå¾ããã¦ããããè¦ã
- 以ä¸ã®ã¡ãªããããã
- èªååãããããã»ã¹
- å¤åã«å¼·ã
- ã¡ã³ããã³ã¹ãããã
- Serializeãããã¨ãã§ãã
- expectã®å½¢ãã®ã¾ã¾ã§ã¯ãªããä¸å®ã®Serializeã®ã«ã¼ã«ã«å¾ã£ã¦å¤å½¢ãã¦ãã
- Componentã®ãã¹ã
- react-test-rendererã§renderãã
expect(component).toMatchSnapshot()
- Enzyme使ããªãã®? ãã³ãã¯Serializers
- enzyme-to-json/serializer
- react-test-rendererã§renderãã
- è¶³ãç®é¢æ°ã®ä¾ãªãã°ããã¹ãã以ä¸ã®ããã«æ¸ãæãã
- console.logã§emojiãåºåãã¦ãã¹ãã³ã¼ãã«ã³ããããã¨ãã¹ãã¯éããã©…
- Jestã¯ãã¹ããã©ãããã©ã¼ã
- webpackã®configãsnapshotã§ãã¹ãããæ§æ³ããã?
A Beginner’s Guide to Code Splitting Your React App (Neehar Venugopal)
æ¦è¦
- ã¢ãã¤ã«ãã¡ã¼ã¹ãã®æä»£ã«ã¯ããã©ã¼ãã³ã¹ã®ããã«Code Splittingãå¿ ç¨
- æ§ã ãªã¬ã¤ã¤ã¼ãæ§ã ãªãã¼ã«ã§Code Splittingã®ã¢ããã¼ãããã¦ãã
- webpackãReact Routerã Dynamic Importãªã©ã®ãã¼ã«ã»æè¡ããã³ã³ãã¼ãã³ãã®å®è£ æ¹æ³ãªã©ãè±å¯ãªã¢ããã¼ãã§å®è·µçãªææ®µãæä¾ãã¦ãããããæ å ±éãå¤ããã¦ä¸åº¦èããã ãã§ã¯çè§£ã§ããªãã£ã
ã¡ã¢
- ãªãCode Splittingããã?
- ã·ã¹ãã ã巨大ã«ãªã£ã¦ãJavascriptã大ãããªããã¡
- ä»ã¯ã¢ãã¤ã«ãã¡ã¼ã¹ãã®æä»£ã§ç¹ã«æ°ãã¤ããã¹ã
- ã·ã¹ãã ã巨大ã«ãªã£ã¦ãJavascriptã大ãããªããã¡
- Long Term Caching
- app.jsã¨vendor.jsã§åãã
- ãã¡ã¤ã«åã®ããã·ã¥
- max-age: inifinity
- app.jsã¨vendor.jsã§åãã
- Reactã§ã©ãæ±ãã?
- LazyLoadã³ã³ãã¼ãã³ããå®è£
ãã
- å®è£
æ¹æ³ã¨ãã¦ã¯…
- Higher Order Component(+ Generator)
- storeã§ãã£ãã·ã¥ã解決ãã
- staticã§ãã£ãã·ã¥ã解決ãã
- ãã©ã¬ã«ã«childrenãlazy loadãã?
- å®è£
æ¹æ³ã¨ãã¦ã¯…
- ã©ã®ã¬ã¤ã¤ã¼ã§ã³ã¼ãsplitãã?
- route level splitting
- åºåãããã³ã¼ãã®éè¤ã«æ°ãã¤ããã
- Component level splitting
- route level splitting
- Responsive Componentsãä½ãå ´åã¯ã以ä¸ã«æ°ãã¤ãã
- ã¢ãã¤ã«ãã¡ã¼ã¹ããªãã¶ã¤ã³ã§ãããã¨
- ã¢ãã¤ã«ãã¡ã¼ã¹ãã®CSSã§ãããã¨
- ã¢ãã¤ã«ãã¡ã¼ã¹ãã®JSã§ãããã¨
- PCã¨SPã§ã®ãã³ãã¬ã¼ãã®åãåãã¯3ã¤ã®æ¹æ³ãèãããã
- 1ã¤ã®ã³ã³ãã¼ãã³ãã§å¯¾å¿ãããã¿ã¼ã³
- 2ã¤ã®ã³ã³ãã¼ãã³ãã対å¿ãããã¿ã¼ã³
- ãã¹ã¯ãããçãã¢ãã¤ã«çã§ç½®ãæãããã¿ã¼ã³
- LazyLoadã³ã³ãã¼ãã³ããå®è£
ãã
- APIéä¿¡ããã³ã³ãã¼ãã³ããä½ã£ãããå¿ ãlazy loadã«ãã¹ããã¨ããã®ãæè«
Web-Like Development and Release Agility for React Native (Parashuram N)
æ¦è¦
- ãã¤ã¯ãã½ããã®ã¨ã³ã¸ãã¢
- Mobile Centerã¨Code Pushã®è£½åãå©ç¨ãã¦ãWebã¢ããªã±ã¼ã·ã§ã³ã®ããã«React Nativeã®ã¢ããªã±ã¼ã·ã§ã³ãCIãããªããªã¼ãã
- éä¸ã§ããã¨ã¢ããªã±ã¼ã·ã§ã³ãã¯ã©ãã·ã¥ããããããã¢ã䏿ãã¦è£½åã®é åãçè§£ããããã£ã
Slides and links from my #reactconf talk about web like dev & release agility with React Native - https://t.co/olzZoXO2Tk.
— Parashuram (@nparashuram) 2017å¹´3æ14æ¥
ã¡ã¢
- React Native㯠JavaScriptã®ã³ã¼ããJavaScipt Coreãè§£éããNativeUIãåãããã¤ãã³ããåãåã
- React Nativeã®ã¢ããªã±ã¼ã·ã§ã³ãé
å¸ããã«ã¯Build -> Test -> Sign -> Distributeã®ããã»ã¹ãè¸ãå¿
ç¨ããã
- Mobile Centerã¯ããããçµ±åãã¦æä¾ãã¦æä¾ããã¯ã©ã¦ãç°å¢
- ãã«ã
- ãã©ãããã©ã¼ã ã鏿è¢ãè¨èªããã¬ã¼ã ã¯ã¼ã¯ã鏿ãã(Androidã®ä¾ã ã£ãã®ã§ãJava/React Native/Xamarin)
- æ°ããã¢ããªã±ã¼ã·ã§ã³ã®ä½æãç°¡å
- ãã¹ã
- ã¯ã©ã¦ãä¸ã§ã¿ã¼ã²ããããã¤ã¹ã鏿ãã¦å®è¡ã§ãã
- Native UIããã®ã¤ãã³ããPlugin Registryã§åãåã£ã¦ãEvent Emitterã§ã¯ã©ã¦ãä¸ã®å種ã¿ã¼ã²ããããã¤ã¹ã«ããã¼ããã£ã¹ããã¦ãã
- ãã¹ããrecordãã¦å®è¡ã§ãããseleniumã®ããã«
- ã¯ã©ãã·ã¥ã¬ãã¼ãã£ã³ã°ããã
- mobile-center-crashes ã¨ããnpmãããã¦ãã
- ãããã°ã¯node.js(node-chakracore)ã§ãVS Codeãªãã°ãããã¬ãå©ç¨å¯è½
- ãã«ã
- Code Push (Mobile Centerã«ã¤ã³ãã°ã¬ã¼ããããäºå®)
- 端æ«ã¸ã®æ´æ°ã®ä»çµã¿
- ä»å¾ABãã¹ããããã§ã§ããããã«ãªã
- VS Code for React Native
- TSãµãã¼ã
- ReactNativeç¨ã®å種ã¨ã¯ã¹ãã³ã·ã§ã³
- Deployãã¨ãã£ã¿ããå¯è½ããããã¬å©ç¨å¯è½
- ã¿ã¤ã ãã©ãã«Debuggingãã§ãã
- Mobile Centerã¯ããããçµ±åãã¦æä¾ãã¦æä¾ããã¯ã©ã¦ãç°å¢
React-Storybook: Design, Develop, Document and Debug your React UI components (Marie-Laure Thuret)
æ¦è¦
- React Storybookã«ããlive documentationã®ä½ãæ¹
- éçºããã¼ã®å ¨ã¦ã®æ®µéãStorybookã¯æå¹ã«æ©è½ãã
I just published âBuilding a React Components Living Documentation using React-Storybook.â https://t.co/fcoyvmrPoX
— Marie-Laure Thuret (@mlthuret) 2016å¹´8æ10æ¥
ã¡ã¢
- UIã³ã³ãã¼ãã³ãã¯stateã«ããããããã¡ãªãã®ãã©ããã£ããããã¥ã¡ã³ãã¼ã·ã§ã³ã§ããã®ã?
- React Storybookã®æ¦è¦
- ã³ã¼ãã®ç·¨éãå³åº§ã«Storybookã«é©ç¨ããã
onClick={action('onClick')}Storybookå´ã®ãã¬ã¼ã«åºåãåºæ¥ãcurrentPage={number('currentPage', 1)}ã®ããã«æ¸ãã¨Storybookå´ã®KNOBã®é ç®ã«inputã追å ããã- Descriptionãæ¸ããã¨ãã§ãã
- API First
- Storybookã¯ã¹ã¿ã¤ã«ã¨ãµãã¾ãã®ä¸¡æ¹ãããã¥ã¡ã³ãã«ãªã
- airbnb/react-dateã®storybook
- å£ããªãããã¥ã¡ã³ããä½ãã«ã¯?
- ãã¹ããå¿ ç¨ã
- storybooks/storyshots
- ãã¼ã¯ã¢ãããsnapshot testingãã
- Storybookã®ä¸ã«æ®éã«enzymeãæ¸ãã¦ãè¯ã
- ä¿å®æ§ã¯ã©ããªã®?
- ãããã°ã¨æ¡å¼µ
- æ°ãããã£ã¼ãã£ã¼ãæ¸ãæã«ã¨ã³ããã¤ã³ããè¶³ãã¦ãã
- ãããã°ããããå°ããªç°å¢
- å®éã®ã³ã³ãã¼ãã³ãã®æ¯ãèããã®ã¾ã¾ãªã®ã§ãStorybookã®æ®µéã§ãã°ãçºè¦ã§ãããã¨ããã
- ãããã°ã¨æ¡å¼µ
- éçºããã¼ã®å ¨ã¦ã®æ®µéãStorybookã§ã«ãã¼ãããã¨ãã§ãã
- Add-Onã®ããã®APIããã
Extensible React (Cameron Westland)
æ¦è¦
- Autodeskã®ã¨ã³ã¸ãã¢
- Reactã使ã£ãæ¡å¼µå¯è½ãª(Extensible)ã¢ã¼ããã¯ãã£ãä½ããã
- ãã¹ãããã³ã³ãã¼ãã³ãã§ãä¸ããä¸ã®é層ã«ã¤ãã³ãã伿¬ãã¦ããä»çµã¿ãæ¡å¼µæ§ãä½ããã¦ããã¨èãã
- react-slot-fill ãéçºãã¦ãã®åé¡ã解決ãããã¨ãã¦ãã
ã¡ã¢
- Autodeskã®ã¨ã³ã¸ãã¢ãAutoCADãªã©ã®è£½åããã
- UIãé常ã«è¤é
- ä¼¼ããããªã³ã³ãã¼ãã³ãã ãããªã¨ã¼ã·ã§ã³ã®éããã®ããããããã
- Goal of Extensibility
- ãããã¯ããæ¹åã§ããéçºè ã®æ°ãå¢ãã
- Slot & Fillãä½ã£ã話
- Reactã¯Rootããã³ã³ãã¼ãã³ããé層çã«ãã¹ãããã¦ãã
- ã¦ã¼ã¶ã¤ã³ã¿ã©ã¯ã·ã§ã³ããã£ããã¤ãã³ããä¸ã«ä¼æ¬ããã¦ãããè¾ãããæ¡å¼µãã¥ãããªã
- å ±éã®ç¥å ããã£ã¦ãããã¨ãæ ¹æ¬ã®åå
- Slot & Fillã¨ããæ¦å¿µã追å ãã
Slot.Item = <Fill />ã¿ããã«æ¸ãã- Usage ã«ãµã³ãã«ãã
- ããã«ãã£ã¦ãRootãããã¹ãããæ§é ãèãä¿ã¡ãslotã®ä¸ã«å·®ç°ãéãè¾¼ãããã¨ãã§ãã
Taming the Meta-Language (Cheng Lou)
æ¦è¦
- Facebookã®ã¨ã³ã¸ãã¢ãReason ã®éçºãã¼ã
- Reasonã®Reactãã¤ã³ãã®çºè¡¨(reasonml/reason-react)
- (ããªãæ§ããã«è¨ã£ã¦)JSã®çç£æ§ãææ³ã«å顿èããã£ã¦ãã¦ãMeta-Languageã§è§£æ±ºãããã¨ããæèãå¼·ãæãã
ã¡ã¢
- Reasonãéçºãã¦ãã
- Reasonã®Reactãã¤ã³ãã®reason-reactãéçºãã
- JavaScriptã§ã®è¨è¿°ã¨ã®å·®ç°ãã³ã¼ãä¾ã示ããªãã解説
- propTypes -> types
- JSX -> function
- classes -> modules
- cloneElement -> currying
- setState -> option state
- JavaScriptã§ã®è¨è¿°ã¨ã®å·®ç°ãã³ã¼ãä¾ã示ããªãã解説
<MyBanner name="hello" count=5> ... </MyBanner>
MyBanner.createElement name::'hello' count::5 children::[...] () /* ããããã«åãJSXãæ¸ã */
- ã³ã¼ããæ¸ã以å¤ã«ãmeetupããã¥ã¼ããªã¢ã«ã®æ´åãªã©ããããã¨ããããããã£ã
ããã«ã»QA
- Reactã®éçºè
2人(çæ¹ã¯Sebastian)ãReact Nativeã®éçºè
ãReact Nativeã®çºè¡¨ããã¦ããLeland(Airbnb)ãFiberã®çºè¡¨ããã¦ããLin(mozila)ã®5人ã§ã®ããã«ãã£ã¹ã«ãã·ã§ã³
- ãããããä¼å ´ããéãã¦ããã質åã«ããã©ã¼ãçããå½¢å¼
- ã¹ã©ã¤ããªãå£é ã®ã»ãã·ã§ã³ã ã£ãã®ã§ãèãåããªãé¨åãå¤ãã質åã®ãµããªã ãã§ãããã¿ã¾ãã!
- Airbnb製ã®native-navigationã¯react-navigationã¨ã©ãéãã®?
- Fiberã®ä»å¾
- React Nativeã®ä»å¾
- Reactã³ã³ãã¼ãã³ãã¯å ¨é¨Pure Componentã§æ¸ãã¹ããªã®?
- CSS in JSã®ä»å¾
ã©ã¤ãã¨ã¯ã¹ããªã¨ã³ã¹äºæ¥é¨ã§ã¯ä¸ç·ã«Reactã§éçºãã¦ããã仲éãåéãã¦ãã¾ã!!!