æåã®ãªãªãŒã¹åè£ããŒãžã§ã³React 0.14ãã玹ä»ããŸãïŒ 7æ
ã«äºå®ãããŠããå€æŽã®
ã¢ããŠã³ã¹ãå
¬ââéã
ãŸããã ããªãªãŒã¹ãããã«å®å®ãããŸãããæçµããŒãžã§ã³ããªãªãŒã¹ããåã«è©ŠããŠã¿ãŠãã ããã
GitHubãªããžããªã§ã¿ã¹ã¯ãäœæããŠãåé¡ãããå Žåã¯ãç¥ãããã ãã
èšçœ®
npmã§Reactã䜿çšããbrowserifyãwebpackãªã©ã®ãŠãŒãã£ãªãã£ã䜿çšããŠã³ãŒãã1ã€ã®ããã±ãŒãžã«ã³ã³ãã€ã«ããããšããå§ãããŸãã
npm install --save react@0.14.0-rc1 npm install --save react-dom@0.14.0-rc1
ããã©ã«ãã§ã¯ãéçºã¢ãŒãã§ã¯ãReactã¯è¿œå ã®ãã§ãã¯ãèµ·åããæçšãªèŠåãæäŸããããšã«æ³šæããŠãã ããã ãããã£ãŠãã¢ããªã±ãŒã·ã§ã³ããããã€ãããšããå®çšŒåã¢ãŒãã䜿çšããããã«
å® çšŒåç°å¢ã§
NODE_ENVç°å¢
å€æ°ãèšå®ããŸãããã®ã¢ãŒãã§ã¯ãReactã¯ãµãŒãã¹èŠåãå«ãŸããã¯ããã«é«éã«åäœããŸãã
npmã䜿çšã§ããªãå Žåã¯ã䟿å©ãªããã«ãã©ãŠã¶çšã«ã³ã³ãã€ã«ããããã«ããæäŸããŸãã
ãããã®ã¢ã»ã³ããªã¯ãããŠã¢ãŒããã±ãŒãžãšããŠãå©çšã§ããŸãïŒ
reactããã³
react-dom倧ããªå€æŽ
2ã€ã®ããã±ãŒãžïŒReactããã³React DOM
react-native ã
react-art ã
react-canvasã react-threeãªã©ã®ã¢ãžã¥ãŒã«ãèŠããšãReactã®çŸãããšæ¬è³ªã¯ãã©ãŠã¶ãŒãDOMãšã¯äœã®é¢ä¿ããªãããšãæããã«ãªããŸãã
ãããReactãã¬ã³ããªã³ã°ã§ããããå€ãã®ç°å¢ã§ããéæã§äœ¿ããããããããã«ãã¡ã€ã³ã®
reactããã±ãŒãžã2ã€ã«åå²ããŸãïŒ
reactãš
react-dom ã
ããã¯ãWebããŒãžã§ã³ã®Reactããã³React Nativeã§å
±æã§ããã³ã³ããŒãã³ããäœæããæ¹æ³ãæäŸããŸãã ã¢ããªã±ãŒã·ã§ã³å
ã®ãã¹ãŠã®ã³ãŒããå
±æããå¿
èŠã¯ãããŸããããç°ãªããã©ãããã©ãŒã ã§åãããã«åäœããã³ã³ããŒãã³ããå
±æã§ããããã«ããããšèããŠããŸãã
reactããã±ãŒãžã«ã¯ã
React.createElement ã
.createClass ã
.Component ã
.PropTypes ã
.Children ãããã³èŠçŽ ãšã³ã³ããŒãã³ãã¯ã©ã¹ã«çŠç¹ãåœãŠããã®ä»ã®ãã«ããŒãå«ãŸããŠããŸãã ã³ã³ããŒãã³ããæ§ç¯ããããã«å¿
èŠãª
ååãŸãã¯
æ±çšãã«ããŒãšèããŠããŸãã
react-domããã±ãŒãžã«ã¯ã
ReactDOM.render ã
.unmountComponentAtNodeãããã³
.findDOMNodeãå«ãŸããŠããŸãã
react-dom / serverã§ã¯ã
ReactDOMServer.renderToStringããã³
.renderToStaticMarkupã䜿çšããŠãµãŒããŒã§ã®ã¬ã³ããªã³ã°ããµããŒãããŠããŸãã
var React = require('react'); var ReactDOM = require('react-dom');</p> <p>var MyComponent = React.createClass({ render: function() { return <div>Hello World</div>; } }); ReactDOM.render(<MyComponent />, node);
ãã®ç§»è¡ã®ããã«Facebookã§äœ¿çšãã
èªååãããcodemodã¹ã¯ãªãããå
¬ââéããŸãã
ã¢ããªã³ã¯å¥ã®ããã±ãŒãžã«ç§»åãããŸããïŒ
react-addons-clone-with-props ã
react-addons-create-fragment ã
react-addons-css-transition-group ã
react-addons-linked-state-mixin ã
react-addons-perf ã
react-addons-pure-render-mixin ã
react-addons-shallow-compare ã
react-addons-test-utils ã
react-addons-transition-groupããã³
react- addons -update ããªãã³ã«
ReactDOMã react-domã® unstable_batchedUpdatesä»ã®ãšãããããŒãžã§ã³ç®¡çã®åé¡ãé²ãããã«ãã¢ããªã±ãŒã·ã§ã³ã§
reactããã³
react-domã®ç¹å®ã®ããŒãžã§ã³ã䜿çšããŠãã ããã
DOMããŒããžã®ãªã³ã¯
ãã®ãªãªãŒã¹ã§è¡ã£ãå¥ã®éèŠãªå€æŽã¯ãDOMã³ã³ããŒãã³ããžã®åç
§ãDOMããŒãèªäœãåç
§ããããã«ãªã£ãããšã§ãã
ãããäœãæå³ããã®ãïŒReact DOMã³ã³ããŒãã³ããžã®
ïŒrefïŒãªã³ã¯ã§äœãããŠããã®ããèŠãŠãããã§ã§ããå¯äžã®äŸ¿å©ãªããšã¯
this.refs.giraffe.getDOMNodeïŒïŒãåŒã³åºããŠDOMãååŸããããšã ãš
ããããŸããããŒãã ãã®ãªãªãŒã¹ã§ã¯ã
this.refs.giraffe ãçŸåšã®DOMããŒãã§ãã
ã«ã¹ã¿ã ïŒãŠãŒã¶ãŒå®çŸ©ïŒã³ã³ããŒãã³ããžã®ãªã³ã¯ã¯ä»¥åãšåãããã«æ©èœããããšã«æ³šæããŠãã ããã ãã€ãã£ãDOMã³ã³ããŒãã³ãã®ã¿ããã®å€æŽã®å¯Ÿè±¡ãšãªããŸãã var Zoo = React.createClass({ render: function() { return <div>Giraffe name: <input ref="giraffe" /></div>; }, showName: function() { // Previously: var input = this.refs.giraffe.getDOMNode(); var input = this.refs.giraffe; alert(input.value); } });
ãã®å€æŽã¯ãDOMããŒããã«ãŒãã³ã³ããŒãã³ããšããŠæž¡ããšãã®
ReactDOM.renderã®æ»ãçµæã«ãé©çšãããŸãã refãšåæ§ã«ããããã®å€æŽã¯ã«ã¹ã¿ã ã³ã³ããŒãã³ãã«ã¯é©çšãããŸããã ãããã®å€æŽã«ããããµããŒããããŠããªã
.getDOMNodeïŒïŒã¡ãœããã宣èšãã
ReactDOM.findDOMNodeã¡ãœããã«çœ®ãæããŸãïŒä»¥äžãåç
§ïŒã
æããªã³ã³ããŒãã³ã
Reactåºæã®ã³ãŒãã§ã¯ãèšè¿°ããã³ã³ããŒãã³ãã®ã»ãšãã©ã«ç¬èªã®ç¶æ
ãæãããªãã§ãã ããã ã¹ããŒãã¬ã¹ã ãã®ãããªã³ã³ããŒãã³ãã®æ°ããåçŽãªæ§æãæ瀺ããŸãããã®æ§æã§ã¯ãå°éå
·ãåŒæ°ãšããŠæž¡ããã¬ã³ããªã³ã°ããèŠçŽ ãè¿ãããšãã§ããŸãã
ãã®ãã¿ãŒã³ã¯ãã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ãæ§æãããããã®åçŽãªã³ã³ããŒãã³ãã®äœæãä¿é²ããããã«èšèšãããŠããŸãã å°æ¥çã«ã¯ããããã®ã³ã³ããŒãã³ãå°çšã«ããã©ãŒãã³ã¹ãæé©åããäžèŠãªãã§ãã¯ãã¡ã¢ãªå²ãåœãŠãåé¿ããããšãã§ããŸãã
React-toolsã¯ãµããŒããããªããªããŸãã
react-toolsããã±ãŒãžãš
JSXTransformer.jsã®ãã©ãŠã¶ãŒããŒãžã§ã³
ã¯æãŸãããã
ãŸã ã ã ããŒãžã§ã³
0.13.3ã§ãåŒãç¶ã䜿çšã§ããŸããããµããŒãããªããªã£ããããReactãšJSXã®çµã¿èŸŒã¿ãµããŒãããã
Babelã®äœ¿çšã«åãæ¿ããããšããå§ãããŸãã
ã³ã³ãã€ã©ãŒã®æé©å
Reactã¯ãBabel 5.8.23以éã«å«ããããšãã§ãã2ã€ã®ã³ã³ãã€ã©ãŒæé©åããµããŒãããããã«ãªããŸããã ãããã®å€æ
㯠ãå®è¡ããã©ãŒãã³ã¹ãæ¹åããŸããããµãŒãã¹èŠåãããé ããpropTypesãå«ãéçºã¢ãŒãã§çºçããéèŠãªãã§ãã¯ãã¹ãããããããããããã®å€æ
ã¯äž¡æ¹ãšã
æ¬çªç°å¢ïŒããšãã°çž®å°åïŒã«
ã®ã¿å«ããå¿
èŠããããŸãã
ReactèŠçŽ ã®åã蟌ã¿ïŒ optimisation.react.inlineElementsã¯ã
React.createElementãåŒã³åºã代ããã«ãJSXèŠçŽ ã
{typeïŒ 'div'ãpropsïŒ...}ãªã©ã®ãªããžã§ã¯ãã«å€æããŸãã
ReactèŠçŽ ã®çµ¶ãéãªããæµ®åãïŒ optimisation.react.constantElementsã¯ãèŠçŽ ã®äœæããµãããªãŒã®äžäœã¬ãã«ã«ãäžãããŸããããã¯å®å
šã«éçã§ããã
React.createElementã®åŒã³åºããšç§»åãæžãããŸãã ããã«éèŠãªããšã¯ããµãããªãŒãå€æŽãããŠããªãããšãReactã«éç¥ãããããReactã¯èª¿æŽæã«ãµãããªãŒãå®å
šã«ã¹ãããã§ããŸãã
é倧ãªå€æŽ
ãã€ãã®ããã«ããã®ãªãªãŒã¹ã§ã¯ããã€ãã®éèŠãªå€æŽããããŸãã 倧ããªå€æŽãå ãããã³ã«ãå°ãªããšã1ã€ã®ãªãªãŒã¹ãå«ããŠèŠåããŸãã ã³ãŒããæŽæ°ããæéããããŸãã Facebookã®ã³ãŒãããŒã¹ã¯15,000ãè¶
ããReactã³ã³ããŒãã³ãã§ãããããReactããŒã ã§ã¯ãéèŠãªå€æŽã®åœ±é¿ãæå°éã«æããããåžžã«åªããŠããŸãã
ãããã®3ã€ã®éèŠãªå€æŽã«ãããããŒãžã§ã³0.13ã§èŠåãçæããããããã³ãŒãã«èŠåããªããã°äœãããå¿
èŠã¯ãããŸããã
- propsãªããžã§ã¯ããä¿®æ£ããããããã³ã³ããŒãã³ãäœæåŸã®propsã®å€æŽã¯ãµããŒããããªããªããŸããã ã»ãšãã©ã®å Žåã 代ããã«React.cloneElementã䜿çšããå¿
èŠããããŸãã ãããã®å€æŽã«ãããã³ã³ããŒãã³ããç解ãããããªããäžèšã®ã³ã³ãã€ã«ã®æé©åãå«ãŸããŸãã
- åçŽãªãªããžã§ã¯ãã¯Reactã®åå«ãšããŠãµããŒããããªããªããŸããã代ããã«é
åã䜿çšããå¿
èŠããããŸãã ãã€ã°ã¬ãŒã·ã§ã³ã«ã¯createFragmentãã«ããŒã䜿çšã§ããŸããããã«ãããé
åãè¿ãããŸãã
- ã¢ããªã³ïŒ classSetã¯åé€ãããŸããã 代ããã«ã¯ã©ã¹åã䜿çšããŠãã ãã
ãããã®2ã€ã®å€æŽã¯0.13ã§ã¯èšºæãããŸããã§ããããç°¡åã«èŠã€ããŠä¿®æ£ã§ããŸãã
- React.initializeTouchEventsã¯äžèŠã«ãªããå®å
šã«åé€ã§ããŸãã ã¿ããã€ãã³ããèªåçã«æ©èœããããã«ãªããŸããã
- ã¢ããªã³ïŒäžèšã®ããã«ãDOMããŒããžã®ãªã³ã¯ãå€æŽããããšããäºå®ã«ããã TestUtils.findAllInRenderedTreeãšãã®é¢é£ãã«ããŒã¯ãDOMã³ã³ããŒãã³ãã®åä¿¡ã«ã¯äœ¿çšã§ããªããªããŸããããã«ã¹ã¿ã ã³ã³ããŒãã³ãã®ã¿ã«äœ¿çšã§ããŸãã
æ°ããèŠåã®äŸå€
- åè¿°ã®ããã«ãDOMããŒããžã®åç
§ãå€æŽããããšããäºå®ã«ããã this.getDOMNodeïŒïŒã¯é€å€ããã代ããã«ReactDOM.findDOMNodeïŒthisïŒã䜿çšã§ããŸãã ã»ãšãã©ã®å Žåã findDOMNodeã®åŒã³åºãã¯äžèŠã«ãªã£ãŠããããšã«æ³šæããŠãã ãã-äžèšã®ãDOMããŒããžã®ãªã³ã¯ãã»ã¯ã·ã§ã³ã®äŸãåç
§ããŠãã ããã
倧ããªã³ãŒãããŒã¹ãããå Žåã¯ã èªååãããcodemodã¹ã¯ãªããã䜿çšããŠãã³ãŒããèªåçã«ä¿®æ£ã§ããŸãã - setPropsãšreplacePropsã¯çŸåšçŠæ¢ãããŠããŸãã 代ããã«ãæ°ããããããã䜿çšããŠããããã¬ãã«ã§ReactDOM.renderãå床åŒã³åºããŸãã
- ES6ã³ã³ããŒãã³ãã¯ã©ã¹ã¯ã React.Componentãé©åã«æ¡åŒµããŠãæããªã³ã³ããŒãã³ãããµããŒãããå¿
èŠããããŸãã ES3ã¢ãžã¥ãŒã«ãã³ãã¬ãŒãã¯åŒãç¶ãæ©èœããŸãã
- ã¬ã³ããªã³ã°éã§ãªããžã§ã¯ãã®ã¹ã¿ã€ã«ãåå©çšããã³å€æŽããããšã¯çŠæ¢ãããŠããŸãã ããã¯ç§ãã¡ã®å€åã®æ¬è³ªãåæ ãããªããžã§ã¯ãã®å°éå
·ãåçµããŸãã
- ã¢ããªã³ïŒ cloneWithPropsã¯çŸåšçŠæ¢ãããŠããŸãã 代ããã«React.cloneElementã䜿çšããŸã ïŒ cloneWithPropsãšã¯ç°ãªãã cloneElementã¯classNameãŸãã¯styleãèªåçã«çµåããŸãããå¿
èŠã«å¿ããŠããããæåã§çµåã§ããŸãïŒã
- ã¢ããªã³ïŒä¿¡é Œæ§ãé«ããããã CSSTransitionGroupã¯é·ç§»ã€ãã³ãããªãã¹ã³ããªããªããŸããã 代ããã«ã transitionEnterTimeout = {500}ãªã©ã®ããããã£ã䜿çšããŠãé·ç§»ã®æéãæåã§èšå®ããå¿
èŠããããŸãã
倧å¹
ãªæ¹å
- ãã¹ããããåå«ã®ãªããžã§ã¯ããåãåãã ååã«ããŒãå²ãåœãŠããããã©ããé
åãè¿ãReact.Children.toArrayãè¿œå ãããŸããã ãã®ãã«ããŒã¯ãç¹ã«ã æž¡ãåã«this.props.childrenãåé
åžãŸãã¯ååŸããå Žåã ã¬ã³ããŒã¡ãœããã§ã®åã®ã³ã¬ã¯ã·ã§ã³ã®ç®¡çãç°¡çŽ åããŸãã ããã«ã React.Children.mapã¯åçŽãªé
åãè¿ãããã«ãªããŸããã
- èŠåã®ããã«ãReactã¯console.warnã®ä»£ããã«console.errorã䜿çšããããã«ãªããŸããã ãã©ãŠã¶ã§ã¯ãã³ã³ãœãŒã«ã«ã¹ã¿ãã¯å
šäœã衚瀺ãããŸãã ïŒå°æ¥ã®ããŒãžã§ã³ã§å€æŽããããã³ãã¬ãŒãã䜿çšããå Žåããäºæ³å€ã«åäœããå¯èœæ§ãé«ãã³ãŒãã®å ŽåãèŠåã衚瀺ããããããèŠåã¯ãä¿®æ£ãå¿
èŠãªããšã©ãŒã§ãããšèããããŸããïŒ
- 以åã¯ãä¿¡é ŒãããŠããªããªããžã§ã¯ããReactã®åå«ãšããŠäœ¿çšãããšãXSSã®è匱æ§ãçºçããå¯èœæ§ããããŸãã ã ãã®åé¡ã¯ãã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ãã°ã€ã³ãæ€èšŒããã¢ããªã±ãŒã·ã§ã³ã³ãŒãå
šäœã§ä¿¡é Œã§ããªããªããžã§ã¯ãã䜿çšããªãããšã§ãé©åã«é€å€ããå¿
èŠããããŸãã ä¿è·ã®è¿œå ã¬ã€ã€ãŒãšããŠã React㯠ã Reactãä¿¡é Œã§ããªãJSONãæå¹ãªèŠçŽ ãšèŠãªããªãããã«ãããããµããŒããããã©ãŠã¶ãŒã§ç¹å®ã®ã·ã³ãã«ã¿ã€ãES2015ïŒES6ïŒã§èŠçŽ ãããŒã¯ããããã«ãªããŸããã ãã®è¿œå ã®ã»ãã¥ãªãã£ä¿è·ãéèŠãªå Žåã¯ã Babelã®polyfillãªã©ã®å€ããã©ãŠã¶ã«Symbol polyphileãè¿œå ããå¿
èŠããããŸãã
- å¯èœãªéããReact DOMã¯XHTMLæºæ ã®ããŒã¯ã¢ãããçæããããã«ãªããŸããã
- React DOMã¯ã次ã®æšæºHTMLå±æ§ããµããŒãããããã«ãªããŸããïŒ capture ã challenge ã inputMode ã is ã keyParams ã keyType ã minLength ã summary ã wrap ã ãŸãããããã®éæšæºå±æ§autoSave ã results ã securityããµããŒãããããã«ãªããŸããã
- React DOMã¯ãåå空éå±æ§ã«ã¬ã³ããªã³ã°ã§ãã次ã®SVGå±æ§ããµããŒãããããã«ãªããŸããïŒ xlinkActuate ã xlinkArcrole ã xlinkHref ã xlinkRole ã xlinkShow ã xlinkTitle ã xlinkType ã xmlBase ã xmlLang ã xmlSpace ã
- SVG ç»åã¿ã°ãReact DOMã§ãµããŒããããããã«ãªããŸããã
- React DOMã§ã¯ãã«ã¹ã¿ã èŠçŽ ã§ã«ã¹ã¿ã å±æ§ããµããŒããããŠããŸãïŒã¿ã°åã«ãã€ãã³ãä»ããŠãããã®ããŸãã¯å±æ§ã= "..." ïŒã
- React DOMã¯ã ãªãŒãã£ãªã¿ã°ãšãããªã¿ã°ã§æ¬¡ã®ã¡ãã£ã¢ã€ãã³ãããµããŒãããããã«ãªããŸããïŒ onAbort ã onCanPlay ã onCanPlayThrough ã onDurationChange ã onEmptied ã onEncrypted ã onEnded ã onError ã onLoadedData ã onLoadedMetadata ã onLoadStart ã onPause ã onPlay ã onPlay ã onPlay ã onPlay ã onPlay ã onLay onStalled ã onSuspend ã onTimeUpdate ã onVolumeChange ã onWaiting ã
- å€ãã®å°ããªããã©ãŒãã³ã¹ã®æ¹åãè¡ãããŸããã
- å€ãã®èŠåã¯ã以åãããå€ãã®æ
å ±ã衚瀺ããŸãã
- ã¢ããªã³ïŒES6ã¯ã©ã¹ã®PureRenderMixinã®ç§»è¡ãã¹ãšããŠshallowCompareã¢ããªã³ãè¿œå ãããŸããã
- ã¢ããªã³ïŒ CSSTransitionGroupã¯ã -enter-activeãŸãã¯ååé·ç§»ã«äŒŒããã®ãè¿œå ãã代ããã«ã ä»»æã®ã¯ã©ã¹åã䜿çšã§ããããã«ãªããŸããã
æ°ãã圹ç«ã€èŠå
- React DOMã¯ãåã蟌ãŸããHTMLèŠçŽ ãç¡å¹ãªå Žåã«èŠåããããã«ãªããŸãããããã«ãããã¢ããã°ã¬ãŒãäžã®é©ãã¹ããšã©ãŒãåé¿ã§ããŸãã
- document.bodyãReactDOM.renderã®ã³ã³ãããšããŠçŽæ¥æ¥ç¶ãããšãèŠåãçºè¡ãããããã«ãªããŸããã ããã«ãããDOMãå€æŽãããã©ãŠã¶ãŒæ¡åŒµæ©èœã§åé¡ãçºçããå¯èœæ§ããããŸãã
- è€æ°ã®Reactã€ã³ã¹ã¿ã³ã¹ã®å
±æã¯ãµããŒããããŠããªãããããã®ã±ãŒã¹ãçºèŠãããšãã«èŠåã衚瀺ããŠãåé¡ãåé¿ã§ããããã«ããŸããã
éèŠãªä¿®æ£
- ã¢ãã€ã«ãã©ãŠã¶ãç¹ã«Mobile Safariã§ã¯ãã¯ãªãã¯ã€ãã³ããReact DOMã«ãã確å®ã«åŠçãããŸãã
- ã»ãšãã©ã®å ŽåãSVGèŠçŽ ã¯æ£ããåå空éã§äœæãããŸãã
- React DOMã¯ãè€æ°ã®ããã¹ãã®åãæã€<option>èŠçŽ ãæ£ããã¬ã³ããªã³ã°ãããªãã·ã§ã³ãæ£ããéžæãããç¶æ
ã§ãµãŒããŒäžã®<select>èŠçŽ ãã¬ã³ããªã³ã°ããããã«ãªããŸããã
- 2ã€ã®å¥åã®Reactã€ã³ã¹ã¿ã³ã¹ãåãããã¥ã¡ã³ãã«ããŒããè¿œå ãããšïŒãã©ãŠã¶ãŒæ¡åŒµæ©èœãReactã䜿çšããå Žåãå«ãïŒãReact DOMã¯é åºã«ã€ãã³ãåŠçäžã«äŸå€ãã¹ããŒããªãããã«è©Šã¿ãŸãã
- React DOMã§å°æå以å€ã®HTMLã¿ã°ïŒããšãã°ã React.createElementïŒ 'DIV'ïŒ ïŒã䜿çšããŠãåé¡ã¯çºçããŸããããJSXã¿ã°ã®åœåèŠåïŒåã蟌ã¿ã³ã³ããŒãã³ãã®å°æåã倧æåã«ã¹ã¿ã ã³ã³ããŒãã³ãçšïŒã
- React DOMã¯ããããã®CSSããããã£ãç¡æ¬¡å
ã§ãããå€ã«ãpxããè¿œå ããªãããšãç解ããŠããŸãïŒ animationIterationCount ã boxOrdinalGroup ã flexOrder ã tabSize ã stopOpacity ã
- ã¢ããªã³ïŒãã¹ããŠãŒãã£ãªãã£ã䜿çšããå Žåã Simulate.mouseEnterããã³Simulate.mouseLeaveãæ©èœããããã«ãªããŸãã
- ã¢ããªã³ïŒReactTransitionGroupã¯è€æ°ã®ããŒããæ£ããåŠçããåæã«åé€ããããã«ãªããŸããã
æçš¿è
ïŒ
ãã³ã»ã¢ã«ããŒã