DisqusãLiveFyreãFacebookãªã©ã®ãªãœãŒã¹ã«ãã£ãŠæäŸããããªã¢ã«ã¿ã€ã ã³ã¡ã³ãã¢ãžã¥ãŒã«ã®åçŽåãããé¡äŒŒç©ã§ãããã·ã³ãã«ã ãçŸå®çãªããã°ã³ã¡ã³ãã¢ãžã¥ãŒã«ãäœæããŸãã
ç§éã¯æäŸããŸãïŒ
- 衚瀺ããŠãã¹ãŠã®ã³ã¡ã³ãã衚瀺ãã
- ã³ã¡ã³ããå
¥åããã³éä¿¡ããããã®ãã©ãŒã
- å°æ¥ã«äŸåããŠãå®éã®ããã¯ãšã³ããæ¥ç¶ãã
ãŸãå®è£
ãããŸãïŒ
- 楜芳çãªã³ã¡ã³ãïŒãµãŒããŒã«ä¿åãããåã«ã³ã¡ã³ããããŒãžã«è¡šç€ºããããããèŠèŠçã«ã¢ãžã¥ãŒã«ãé«éåã§ããŸã
- ã©ã€ãæŽæ°ïŒä»ã®ãŠãŒã¶ãŒããã®ã³ã¡ã³ãããªã¢ã«ã¿ã€ã ã§ããŒãžã«è¡šç€ºãããŸã
- ããŒã¯ããŠã³æžåŒèšå®ïŒãŠãŒã¶ãŒã¯ãããŒã¯ããŠã³æžåŒèšå®ã䜿çšããŠããã¹ããæžåŒèšå®ã§ããŸã
æçµç
GitHubãªã³ã¯
ãµãŒããŒèµ·å
ããã¥ã¢ã«ãéå§ããåã«ããµãŒããŒãèµ·åããå¿
èŠããããŸãã ããã¯ãããŒã¿ã®åä¿¡ãšä¿åã«äœ¿çšããåçŽãªAPIã§ãã ãã§ã«ããã€ãã®ã€ã³ã¿ããªã¿èšèªã§äœæããŠãããå¿
èŠæå°éã®æ©èœãåããŠããŸãã ãœãŒã¹ã³ãŒãã«æ
£ããããå¿
èŠãªãã®ããã¹ãŠå«ãŸããŠããzipã¢ãŒã«ã€ããããŠã³ããŒãã§ããŸãã
ã¯ããã«
ãã®ã¬ã€ãã§ã¯ãã§ããéãã·ã³ãã«ã«ãã¹ãŠãå®è£
ããããšããŸãã åè¿°ã®ã¢ãŒã«ã€ãã«ã¯ãäœæ¥ãç¶ç¶ããHTMLãã¡ã€ã«ããããŸãã ã³ãŒããšãã£ã¿ã§public / index.htmlãã¡ã€ã«ãéããŸãã 次ã®ããã«ãªããŸãã
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>React Tutorial</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.2/react.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.2/react-dom.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.5/marked.min.js"></script> </head> <body> <div id="content"></div> <script type="text/babel" src="scripts/example.js"></script> <script type="text/babel"> </script> </body> </html>
ããã¥ã¢ã«ã®ãã¹ãŠã®JavaScriptã³ãŒãã¯ãscriptã¿ã°ã«èšè¿°ããŸãã ã©ã€ããªããŒãããªããããå€æŽãä¿åãããã³ã«ãã©ãŠã¶ã§ãããžã§ã¯ãããŒãžãæŽæ°ããå¿
èŠããããŸãã ãã©ãŠã¶ã§ãªã³ã¯httpïŒ// localhostïŒ3000ãéããšãçµæã远跡ã§ããŸãïŒãµãŒããŒã®èµ·ååŸïŒã ã³ãŒããå€æŽããã«åããŠãªã³ã¯ãéããšãã³ã¡ã³ãã¢ãžã¥ãŒã«ã®æçµããŒãžã§ã³ã衚瀺ãããŸãã éå§ããã«ã¯ããããžã§ã¯ãã®æçµããŒãžã§ã³ãscripts / example.jsãã®ã³ãŒããããŒãããæåã®ã¹ã¯ãªããã¿ã°ãåé€ããå¿
èŠããããŸã ã
泚ïŒãããžã§ã¯ãã§jQueryã䜿çšããŠãä»åŸã®Ajaxãªã¯ãšã¹ãã®ã³ãŒããç°¡çŽ åããŸãããããã¯Reactã©ã€ãã©ãªã§ã¯ãããŸãã ã
æåã®ã³ã³ããŒãã³ã
Reactã¯ãã¢ãžã¥ã©ãŒã§æ§æå¯èœãªãã¬ãŒã ã¯ãŒã¯ã§ãã ãã®ãããžã§ã¯ãã¯ã次ã®æ§é ã«ããããã€ãã®ã³ã³ããŒãã³ãã§æ§æãããŠããŸãã
- ã³ã¡ã³ãããã¯ã¹
- ã³ã¡ã³ããªã¹ã
- ã³ã¡ã³ããã©ãŒã
CommentBoxã³ã³ããŒãã³ããäœæããŸã ãããã¯ãåºåã®éåžžã®<div>
ã¿ã°ã«ãªããŸãã
Reactã¯ã©ã¹ã®ååã倧æåã«ãªã£ãŠããå ŽåãHTMLèŠçŽ ã®ååã¯å°æåã§å§ãŸãããšã«æ³šæããŠãã ããã
JSXæ§æ
æåã«ç®ãåŒãã®ã¯ãæäŸãããŠããJavaScriptã³ãŒãã®XMLã«äŒŒãæ§æã§ãã åºåã§çŽç²ãªJavaScriptãçæããåçŽãªããªã³ã³ãã€ã©ã䜿çšããŸãã
ããªã³ã³ãã€ã©ã®äœ¿çšã¯ãªãã·ã§ã³ã§ãããçŽç²ãªJavaScriptã§èšè¿°ã§ããŸãããã¬ã€ãã§ã¯JSXæ§æã䜿çšããŸãã 詳现ã«ã€ããŠã¯ã JSXæ§æã®èšäºãåç
§ããŠãã ãã ã
ã³ãŒãã§äœãèµ·ããã
ããã€ãã®ã¡ãœãããæã€JavaScriptãªããžã§ã¯ããReact.createClassïŒïŒã«æž¡ããŠãæ°ããReactã³ã³ããŒãã³ããäœæããŸãã æž¡ãããæãéèŠãªã¡ãœããã¯renderãšåŒã°ããæçµçã«HTMLã«å€æãããReactã³ã³ããŒãã³ãã®ããªãŒãè¿ããŸãã
<div>
ã¿ã°ã¯å®éã®DOMããŒãã§ã¯ãªããããã¯React <div>
ã³ã³ããŒãã³ãã®å®è£
ã§ãã ReactãåŠçæ¹æ³ãç¥ã£ãŠããããŒã«ãŒãŸãã¯ããŒã¿ã®æçãèæ
®ããããšãã§ããŸãã Reactã¯XSSã®è匱æ§ã«é¢ããŠå®å
šã§ãã
HTMLã³ãŒããè¿ãå¿
èŠã¯ãããŸããã èªåïŒãŸãã¯ä»ã®èª°ãïŒãäœæããã³ã³ããŒãã³ãããªãŒãè¿ãããšãã§ããŸãã ãã®ã¢ãããŒãã«ãããReactã¯æ§æå¯èœã«ãªããŸããããã¯ãããç¶æãããé©åã«èšèšãããããã³ããšã³ãã¢ãŒããã¯ãã£ã®éèŠãªæ©èœã§ãã
ReactDOM.renderïŒïŒã¯ãã«ãŒãã³ã³ããŒãã³ãã®ã€ã³ã¹ã¿ã³ã¹ãäœæãããã¬ãŒã ã¯ãŒã¯ãèµ·åãã2çªç®ã®åŒæ°ã§æž¡ãããDOMèŠçŽ ã«ããŒã¯ã¢ãããæ¿å
¥ããŸãã
ReactDomãªããžã§ã¯ãã«ã¯ãDOMãæäœããããã®ã¡ãœãããå«ãŸããŠããŸããã Reactãªããžã§ã¯ãã«ã¯ã React Nativeãªã©ã®ä»ã®ã©ã€ãã©ãªã§äœ¿çšãããã«ãŒãã¡ãœãããå«ãŸããŠããŸãã
ReactDOM.renderã®åŒã³åºãã¯ããã¹ãŠã®ã³ã³ããŒãã³ãã宣èšãããåŸã«è¡ãå¿
èŠããããŸãã ããã¯éèŠã§ãã
çµã¿åãããã³ã³ããŒãã³ã
éåžžã®<div>
ãªãCommentListããã³CommentFormã®ã¹ã±ã«ãã³ãäœæããŸãã ãããã®2ã€ã®ã³ã³ããŒãã³ãããã¡ã€ã«ã«è¿œå ããåã®äŸã®CommentBoxãšReactDOM.renderãããããã®å Žæã«æ®ããŸã ã
次ã«ã CommentBoxã³ã³ããŒãã³ããå€æŽããŠãæ°ããã³ã³ããŒãã³ãïŒã// newããšããŒã¯ãããè¡ïŒã䜿çšããŸãã
äœæããHTMLã¿ã°ãšã³ã³ããŒãã³ãã®çµã¿åããã«æ³šæããŠãã ããã HTMLã³ã³ããŒãã³ãã¯ãç§ãã¡ãçºè¡šãããã®ã®ãããªæšæºã®Reactã³ã³ããŒãã³ãã§ããã1ã€ã ãéãããããŸãã JSXããªããã»ããµã¯ã React.createElementïŒtagNameïŒåŒã®HTMLã¿ã°ãèªåçã«æžãæããä»ã®ãã¹ãŠããã®ãŸãŸã«ããŸãã ããã¯ãã°ããŒãã«åå空éã®ç®è©°ãŸããé²ãããã«å¿
èŠã§ãã
詳现ã®äœ¿çš
芪ã³ã³ããŒãã³ãã«ãã£ãŠéä¿¡ãããããŒã¿ã«äŸåããã³ã¡ã³ãã³ã³ããŒãã³ããäœæããŸãã 芪ããæž¡ãããããŒã¿ã¯ãåã³ã³ããŒãã³ãã®ããããã£ãšããŠå©çšã§ããŸãã ããããã£ãžã®ã¢ã¯ã»ã¹ã¯this.propsãä»ããŠè¡ãããŸãã 詳现ã䜿çšããŠã CommentListããCommentã«æž¡ãããããŒã¿ãèªã¿åããããŒã¯ã¢ããã衚瀺ã§ããŸãã
JavaScriptåŒãJSXå
ã§äžæ¬åŒ§ã§å²ãããšã«ãããããã¹ããŸãã¯Reactã³ã³ããŒãã³ããããªãŒã«è¿œå ã§ããŸãã this.propsã®ããŒãšããŠã³ã³ããŒãã³ãã«æž¡ãããååä»ãå±æ§ãããã³this.props.childrenãªã©ã®ãã¹ããããèŠçŽ ã«ã¢ã¯ã»ã¹ããŸãã
ã³ã³ããŒãã³ãã®ããããã£
Commentsã®å®£èšãããã³ã³ããŒãã³ããã§ããã®ã§ãèè
ã®ååãšã³ã¡ã³ãã®ããã¹ããæž¡ããŸãã ããã«ãããåã³ã¡ã³ãã«åãã³ãŒããåå©çšã§ããŸãã 次ã«ã CommentListã³ã³ããŒãã³ãã«ããã€ãã®ã³ã¡ã³ããè¿œå ããŸãã
CommentListã®èŠªã³ã³ããŒãã³ãããCommentã®åã³ã³ããŒãã³ãã«ããŒã¿ãæž¡ãæ¹æ³ã«æ³šç®ããŠãã ããã ããšãã°ãæåã®Commentã« Pete Hunt ïŒå±æ§ãä»ããŠïŒãæž¡ãã ãã㯠ïŒXMLã«äŒŒãåããŒããä»ããŠïŒ1ã€ã®èŠçŽ ã§ãã åè¿°ã®ããã«ã Commentã³ã³ããŒãã³ãã¯this.props.authorããã³this.props.childrenãä»ããŠãããã®ããããã£ã«ã¢ã¯ã»ã¹ããŸãã
ããŒã¯ããŠã³ããŒã¯ã¢ãããè¿œå
ããŒã¯ããŠã³ã¯ãããã¹ãããã©ãŒããããã䟿å©ãªæ¹æ³ã§ãã ããšãã°ãã¢ã¹ã¿ãªã¹ã¯ã§ã©ãããããããã¹ãã«ã¯ãåºåã«äžç·ãåŒãããŸãã
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãããŒã¯ããŠã³ããããµãŒãããŒãã£ã©ã€ãã©ãªã䜿çšããŸãããã㯠ãMarkdownããŒã¯ã¢ãããçŽç²ãªHTMLã«å€æããŸãã ãã®ã©ã€ãã©ãªãæ¢ã«HTMLãã¡ã€ã«ã«å«ããŠããããã䜿çšãéå§ã§ããŸãã MarkdownããŒã¯ã¢ããã«åºã¥ããŠã³ã¡ã³ãããã¹ããå€æããŠåºåããŸãã
ããã§è¡ã£ãã®ã¯ã ããŒã¯ãããã©ã€ãã©ãªãåŒã³åºãããšã ãã§ãã ããã§ã this.props.childrenãReactã®ãããªããã¹ãããã ããŒã¯ãããç解ã§ããéåžžã®è¡ã«å€æããå¿
èŠããããããå
·äœçã«toStringïŒïŒé¢æ°ãåŒã³åºããŸãã
ããããåé¡ããããŸãïŒ ãã©ãŠã¶ã§åŠçãããã³ã³ããŒãã³ãã¯ãã <p>
ããã¯<em>
å¥ã®</em>
ã³ã¡ã³ã</p>
ãã®ããã«ãªããŸãã ãã¹ãŠã®ã¿ã°ãHTMLããã¹ãã®ããŒã¯ã¢ããã«å€æããå¿
èŠããããŸãã
ãããã£ãŠãReactã¯XSSæ»æãããŠãŒã¶ãŒãä¿è·ããŸãã ãããåé¿ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
ããã¯çŽç²ãªHTMLã§ã®äœæ¥ãæå³çã«è€éã«ããç¹å¥ãªAPIã§ããã markedã«ã€ããŠã¯äŸå€ãäœæããŸãã
泚æïŒïŒãã®ãããªäŸå€ã䜿çšãããšã ããŒã¯ãããã©ã€ãã©ãªã®ã»ãã¥ãªãã£ã«å®å
šã«äŸåããŸãã ãããè¡ãã«ã¯ã2çªç®ã®åŒæ°ãsenitizeïŒtrueã«æž¡ããŸããããã«ã¯ãHTMLã¿ã°ã®ã¯ãªã¢ãå«ãŸããŸãã
ããŒã¿ã¢ãã«ãæ¥ç¶ãã
ãããŸã§ãã³ãŒãããçŽæ¥ã³ã¡ã³ããæ¿å
¥ããŸããã ããã§ãJSONãªããžã§ã¯ããã³ã¡ã³ããªã¹ãã«å€æããŠã¿ãŸãããã 次ã«ããµãŒããŒããããããååŸããŸãããããã§ã¯ã³ãŒãã«æ¬¡ã®è¡ãè¿œå ããŸãã
次ã«ããã®ãªããžã§ã¯ããCommentListã«æž¡ããŠãã¢ãžã¥ãŒã«æ§ã芳å¯ããå¿
èŠããããŸãã propsã¡ãœããã䜿çšããŠã CommentBoxãšRenderDOM.renderïŒïŒãå€æŽããŠã CommentListã³ã³ããŒãã³ãã«ããŒã¿ã転éããŸãã
CommentListã³ã³ããŒãã³ãã§ããŒã¿ãå©çšå¯èœã«ãªã£ãã®ã§ãã³ã¡ã³ããåçã«è¡šç€ºããŠã¿ãŸãããã
ã§ããïŒ
ãµãŒããŒããã³ã¡ã³ããåãåã
ã³ãŒãã«å«ãŸããã³ã¡ã³ãããµãŒããŒããã®ããŒã¿ã«çœ®ãæããŸãã ãããè¡ãã«ã¯ã以äžã«ç€ºãããã«ã ããŒã¿å±æ§ãurlã«çœ®ãæããŸãã
ã泚æ ãã®æç¹ã§ãã³ãŒãã¯æ©èœããŸããã
åå¿ç¶æ
ãããŸã§ãåã³ã³ããŒãã³ãã¯ãã©ã¡ãŒã¿ã«åºã¥ããŠäžåºŠæç»ããã å°éå
·ã¯å€æŽãããŸãããã€ãŸãã芪ããéä¿¡ãããææè
ã®ãŸãŸã«ãªããŸãã çžäºäœçšãæŽçããããã«ãã³ã³ããŒãã³ãã«å¯å€ããããã£ãè¿œå ããŸãã this.stateã¯ã³ã³ããŒãã³ãã«å¯ŸããŠãã©ã€ããŒãã§ããã this.setStateïŒïŒãåŒã³åºããŠå€æŽã§ããŸãã ããããã£ãæŽæ°ãããšãã³ã³ããŒãã³ãã¯åæç»ãããŸãã
renderïŒïŒã¡ãœããã¯ãé¢æ°this.propsãthis.stateã®ããã«å®£èšçã«èšè¿°ãããŸãã
Reactã¯ããµãŒããŒãšãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ããŒã¿ã®äžè²«æ§ã確ä¿ããŸãã
ãµãŒããŒãããŒã¿ãéä¿¡ãããšããã€ã³ã¿ãŒãã§ã€ã¹ã®ã³ã¡ã³ããå€æŽããå¿
èŠããããŸãã CommentBoxã³ã³ããŒãã³ãã«å¥åã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠã³ã¡ã³ãé
åãè¿œå ããŸãã
getInitialStateïŒïŒã¯ãã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«äžã«1åå®è¡ãããã³ã³ããŒãã³ãã®åæç¶æ
ãèšå®ããŸãã
æŽæ°ã¹ããŒã¿ã¹
ã³ã³ããŒãã³ããäœæããåŸããµãŒããŒããJSONãååŸããã³ã³ããŒãã³ãã®ããŒã¿ãæŽæ°ããŠã€ã³ã¿ãŒãã§ãŒã¹ã«è¡šç€ºããŸãã éåæãµãŒããŒãªã¯ãšã¹ãã®å ŽåãjQueryã䜿çšããŸãã ããŒã¿ã¯ãæåã«èµ·åãããµãŒããŒïŒcomments.jsonã«ä¿åïŒã«æ¢ã«ãããŸãã ãµãŒããŒããããŒã¿ãåä¿¡ãããšã this.state.dataã«ã¯ä»¥äžãå«ãŸããŸãã
[ {"id": "1", "author": "Pete Hunt", "text": "This is one comment"}, {"id": "2", "author": "Jordan Walke", "text": "This is *another* comment"} ]
componentDidMountã¡ãœããã¯ãã³ã³ããŒãã³ãã®æåã®ã¬ã³ããªã³ã°åŸã«Reactã«ãã£ãŠèªåçã«åŒã³åºãããŸãã this.setStateïŒïŒã¡ãœããã¯ãåçã«æŽæ°ãè¡ããŸãã å€ãã³ã¡ã³ãé
åããµãŒããŒããã®æ°ããé
åã«çœ®ãæããã€ã³ã¿ãŒãã§ãŒã¹ã¯èªåçã«æŽæ°ãããŸãã ãã®ããããªã¢ã«ã¿ã€ã ã§æŽæ°ãè¿œå ããã«ã¯ããã€ããŒãªç·šéãââå¿
èŠã§ãã ç°¡åã«ããããã«ã ããŒãªã³ã°ãã¯ãããžãŒïŒFrequent RequestsïŒã䜿çšããŸãããå°æ¥ã¯WebSocketsãŸãã¯ãã®ä»ã®ãã¯ãããžãŒãç°¡åã«äœ¿çšã§ããŸãã
ããã§ã¯ãAJAXãªã¯ãšã¹ããå¥ã®ã¡ãœããã«ç§»åããã³ã³ããŒãã³ãã®æåã®èªã¿èŸŒã¿åŸãš2ç§ããšã«åŒã³åºããéå§ããŸãã ããã§ããã©ãŠã¶ã§ã³ã¡ã³ãããŒãžãéãã comments.jsonãã¡ã€ã«ïŒãµãŒããŒã®ã«ãŒããã£ã¬ã¯ããªå
ïŒã«å€æŽãå ããŸãã 2ç§ä»¥å
ã«ããŒãžã«å€æŽã衚瀺ãããŸãã
æ°ããã³ã¡ã³ããè¿œå
次ã«ãã³ã¡ã³ããã©ãŒã ãäœæããŸãã CommentFormã³ã³ããŒãã³ãã¯ããŠãŒã¶ãŒã«ã³ã¡ã³ãã®ååãšããã¹ããèŠæ±ããããã«ã³ã¡ã³ããä¿åããããã«ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããå¿
èŠããããŸãã
å¶åŸ¡ãããã³ã³ããŒãã³ã
åŸæ¥ã®DOMã§ã¯ã å
¥åèŠçŽ ãæç»ãããŠããããã©ãŠã¶ããã®å€ãèšå®ããŸãã ãã®çµæãDOMå€ã¯ã³ã³ããŒãã³ãå€ãšã¯ç°ãªããŸãã ãã¥ãŒã®å€ãã³ã³ããŒãã³ãã®å€ãšç°ãªãå Žåãããã¯æªãã§ãã Reactã§ã¯ãã³ã³ããŒãã³ãã¯ããã®åæåæã ãã§ãªããåžžã«ãã¥ãŒã«å¯Ÿå¿ããå¿
èŠããããŸãã
ãããã£ãŠã this.stateã䜿çšããŠãŠãŒã¶ãŒå
¥åãä¿åããŸãã äœæè
ãšããã¹ãã® 2ã€ã®ããããã£ã䜿çšããŠåæç¶æ
ã®ç¶æ
ã宣èšãã空ã®æååã®å€ãå²ãåœãŠãŸãã <input>
èŠçŽ ã§ã å€ã® ç¶æ
ã valueãã©ã¡ãŒã¿ãŒã«å²ãåœãŠã onChangeãã³ãã©ãŒããã®äžã«é
眮ããŸãã valueå±æ§å€ãèšå®ããããã®<input>
èŠçŽ ã¯ãå¶åŸ¡ã³ã³ããŒãã³ããšåŒã°ããŸãã ã³ã³ãããŒã«ãããã³ã³ããŒãã³ãã®è©³çŽ°ã«ã€ããŠã¯ã ãã©ãŒã ã®èšäºãã芧ãã ãã ã
ã€ãã³ã
Reactã€ãã³ããã³ãã©ãŒã¯camelCaseåœåèŠåã䜿çšããŸãã 2ã€ã®<input>
èŠçŽ ã«onChangeãã³ãã©ãŒãæããŸãã ã ãŠãŒã¶ãŒã<input>
ãã£ãŒã«ãã«ããŒã¿ã<input>
ã®ã§ãã€ãã³ããã³ãã©ãŒã¯ã³ãŒã«ããã¯ãè¡ããã³ã³ããŒãã³ãã®å€ãå€æŽããŸãã ãã®åŸãã³ã³ããŒãã³ãã®çŸåšã®å€ãåæ ããããã«ã å
¥åå€ãæŽæ°ãããŸãã
ãã©ãŒã éä¿¡
ãã©ãŒã ãã€ã³ã¿ã©ã¯ãã£ãã«ããŸãããã ãŠãŒã¶ãŒããã©ãŒã ãéä¿¡ããåŸããã©ãŒã ãã¯ãªã¢ãããµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããã³ã¡ã³ãã®ãªã¹ããæŽæ°ããå¿
èŠããããŸãã æåã«ããã©ãŒã ããŒã¿ãååŸããŠã¯ãªã¢ããŸãã
ãã©ãŒã ã«onSubmitãã³ãã©ãŒããã³ã°ã¢ããããŸããããã«ããããã©ãŒã ã«æ£ããããŒã¿ãå
¥åãããŠéä¿¡ããããšãã«ã¯ãªã¢ãããŸãã
preventDefaultïŒïŒãåŒã³åºã㊠ããã©ãŠã¶ãããã©ã«ãã§ãã©ãŒã ãéä¿¡ããªãããã«ããŸãã
ãã©ã¡ãŒã¿ãŒãšããŠã®ã³ãŒã«ããã¯
ãŠãŒã¶ãŒãã³ã¡ã³ããéä¿¡ããããã³ã¡ã³ãã·ãŒããæŽæ°ããŠæ°ãããã®ãè¿œå ããå¿
èŠããããŸãã CommentBoxã¯ã³ã¡ã³ãã®ãªã¹ãã管çããããããã®ãã¹ãŠã®ããžãã¯ãCommentBoxã«å®è£
ããããšã¯çã«ããªã£ãŠããŸãã
åã³ã³ããŒãã³ããã芪ã«æž¡ãå¿
èŠããããŸãã ããã¯ã芪renderã¡ãœãããä»ããŠè¡ããæ°ããã³ãŒã«ããã¯ïŒ handleCommentSubmit ïŒãåã«æž¡ã ãåã³ã³ããŒãã³ãã®onCommentSubmitã€ãã³ãã«é¢é£ä»ããŸãã ã€ãã³ããçºçãããã³ã«ãã³ãŒã«ããã¯é¢æ°ãåŒã³åºãããŸãïŒ
CommentBoxã³ã³ããŒãã³ãã onCommentSubmitãã©ã¡ãŒã¿ãŒãä»ããŠCommentFormã³ã³ããŒãã³ããžã®ã³ãŒã«ããã¯é¢æ°ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããã®ã§ ããŠãŒã¶ãŒããã©ãŒã ãéä¿¡ãããšã CommentFormã³ã³ããŒãã³ãã¯ã³ãŒã«ããã¯é¢æ°ãåŒã³åºãããšãã§ããŸãã
ã³ãŒã«ããã¯é¢æ°ãçšæã§ããã®ã§ããµãŒããŒã«ããŒã¿ãéä¿¡ããã³ã¡ã³ãã·ãŒããæŽæ°ããã ãã§ãã
æé©åïŒæ¥œèŠ³çãªæŽæ°
ã¢ããªã±ãŒã·ã§ã³ã®æºåã¯æŽã£ãŠããŸããããµãŒããŒãžã®ãªã¯ãšã¹ããå®äºããã®ãåŸ
ã£ãŠãããããŒãžã«ã³ã¡ã³ãã衚瀺ããããšèŠèŠçã«é
ããªããŸãã ãµãŒããŒãžã®ãªã¯ãšã¹ããå®äºããã®ãåŸ
ããã«ãããã«ã³ã¡ã³ãããªã¹ãã«è¿œå ã§ããŸããããã¯ã»ãŒç¬æã«è¡ãããŸãã
ããã§ãšãããããŸãïŒ
ããã€ãã®ç°¡åãªæé ã§ã³ã¡ã³ãã¢ãžã¥ãŒã«ãäœæããŸããã Reactã䜿çšããçç±ã®è©³çŽ°ãã芧ã«ãªãã ã APIã«çŽæ¥é²ãã§ã³ãŒãã®èšè¿°ãéå§ããŠãã ããïŒ é 匵ã£ãŠ