Reactåå¼·ä¼1(2016-05-25)
çºç«¯
ããããã¨è¨ã£ãã @mizchi ããã£ã¦ããããã¨ã«ãªã£ãã
ä»åã®ç®æ¨
ã¡ã¤ã³ã¯ã¨ã¹ã : ãã® json ã使ã£ã¦ãSplatoon ã®ãããä¸è¦§è¡¨ç¤ºããæ©è½ãä½ã
ãµãã¯ã¨ã¹ã : çµãè¾¼ã¿æ©è½ãä»ãã
ãµãã¯ã¨ã¹ã : æ¤ç´¢ãã©ã¼ã ã¨ä¸è¦§é¨åããµãã³ã³ãã¼ãã³ãã«åãã¦ããããã管çããã«ã¼ãã³ã³ãã¼ãã³ãã« state ã®æ´æ°å
å®¹ãæ¸ãæ»ã
鲿
å²ã¨å®è·µçã§ãæ§ç¯ããªãã説æã¨è¨ãæãã ã£ããå®é GitHub - dolpen/react-tutorial ã®ã³ããããã°ãè¦ãæ¹ãä½ããããã¯åãããããã®ã§ã¯ãªããã¨æãã®ã§å¤§èã«å²æã
ã³ã³ãã¼ãã³ãã¯ä½ãä¸ããããã¹ãã
React èªä½ã¯ data => view ãæ
å½ããã®ã主æ©è½ãªã®ã§ãview ãåºåããã³ã³ãã¼ãã³ãã®æ§ç¯ã«ããã® data ã«å½ãããã®ä»¥å¤ãä¾åã¨ãã¦å
¥ã£ã¦ã¯ãããªãã¨æãããå
·ä½çã«ã¯ state 㨠props ã§ãrender() ã«å¿
è¦ãªæ
å ±ãå
¨ã¦è³ãããã¹ãã ã¨æã£ãã
| ç¨®é¡ | ä½ãå ¥ãã¹ãã |
|---|---|
| state | ãã®ã³ã³ãã¼ãã³ãã管çããç¶æ |
| props | 親ã³ã³ãã¼ãã³ãããæ¸¡ãããæ å ± |
ä»®æ³DOMã¨åæç»
React ã使ãã¨ããããã«ã¯3ã¤ã®DOMããªã¼ãããã¨èããæ¹ãè¯ãã
- å®DOMããã©ã¦ã¶ãã¬ã³ããªã³ã°ã«ä½¿ããã®ã
- ä»®æ³DOM(A)ãå®DOMã¨åãã§ãããã®ã¨ã㦠React å é¨ã§ä¿æããã¦ãããã®
- ä»®æ³DOM(B)ã
stateãæ´æ°ãããã¨ãã«çæããããã®ã
React ã state ã®å¤æ´ãåãã¦å®DOMãæ´æ°ããã¨ãã以ä¸ã®ã¹ããããè¸ã
- æ°ããª
stateãåãã¦ãä»®æ³DOM(B)ã丸ãã¨çæããã - ä»®æ³DOM(A) 㨠仮æ³DOM(B) ãæ¯è¼ãããä»®æ³DOM(A)ã«ã©ã®ãããªæä½ãããã°ãä»®æ³DOM(B)ç¸å½ã«ãªããã®å·®åãã³ãã³ãåãã
- å®DOMã«å·®åã³ãã³ããé©ç¨ããå®DOMãæ°ããª
stateãåæ ãããã®ã«ãªã - ä»®æ³DOM(A) ã ä»®æ³DOM(B) ã§ä¸æ¸ãããã
å®éã«å®DOMã«å¯¾ãã¦å®è¡ãããã³ãã³ãã¯
el.textContent = "piyo"; el.style.color = '#ff0011';
ã¨ãã£ãæãã§ããªãã¿ã®æ¬å½ã«ãã¤ãã£ããªå½ä»¤ã ããReact ã®ä¾¡å¤ã¯ã
- 夿´ãæä½éã«ããããã®å·®åæ¤ç¥ã®ä»çµã¿ããããã¨ã«ãã£ã¦ãå®DOMã®å¿ è¦ä»¥ä¸ã®æ´æ°ãèµ·ãããã¨ããªãé«éã
- ãã®å·®åãã常ã«
stateãpropsã«ä¾åããããã«ãæ®éã«ä½¿ã£ã¦ããã°ç¶æ ã¨è¡¨ç¤ºããºã¬ããã¨ããªãã
ã¨ãããã¨ã ã
ãªãjQueryã俺ã®éãéãããã¦ããã®ãåãããªããªã£ã
ä¸è¨ããjQueryã®ããããã®çã®è¯ããªãã«å¯¾ãã¦ãããã«çè§£ãæ·±ã¾ã£ãã
åºæ¥ä¸ãã£ãå®DOMã«å¯¾ãã¦ã»ã¬ã¯ã¿ã§èµ°æ»ãã¦ãã¢ã¯ã»ãµã§è¡¨ç¤ºãã¤ãã³ããæåã§ä»ãæ¿ããã¨ããjQueryã§å½ããåã«è¡ããã¦ãããã¨ãããµã¼ãã¼ãµã¤ãããã°ã©ãã³ã°ã§è¨ãã¨ãããªæãã«ãªãã
- jspããã³ãã¬ã¼ãã¨ã³ã¸ã³ãç¨ãã¦HTMLãçæãã
- DOMãã¼ãµã¼ã«HTMLãçªã£è¾¼ã
- cssã»ã¬ã¯ã¿ã§ã¨ã¬ã¡ã³ããåå¾ãã
- ããããã£ãå é¨ã®ã³ã³ãã³ããæ¸ãæãã
- æ¸ãæããDOMããHTMLãåçæãã¦ã¬ã¹ãã³ã¹ã«ãã
ãããçã®ãããã¨ã§ã¯ãªãã¨ããäºã¯ä¸ç®è¦ã¦ãåããããæåãããã³ãã¬ã¼ãã®å®ç¾©ã§è¡¨ç¤ºãåºãåãããããã¨ãªãã®ã¯å¿ è³ã§ããã¯ããªã®ã«ãä½ã¨ãªãjQuery使ã£ã¦ããæã¯ãããã䏿è°ã¨ã¯æããªãã£ãã
ãªãä»®æ³DOMã¨ããæ¦å¿µã俺ã®éãéããããã®ã
ãããä»ç¿»ã£ã¦ React ã®ã³ã³ãã¼ãã³ããè¦ã¦ã¿ãã¨ãããã«ã¯ãã¼ã¿å®ç¾©ã¨ãã³ãã¬ã¼ãããããããããããªã¼ã«ãªã£ã¦ããã¨ãããèªåã®ç®ããã¯ãµã¼ãã¼ãµã¤ãã§ããè¦ãå æ¯ã«æ ã£ãããªãä»ã¾ã§ãããªã£ã¦ããªãã£ãã®ã ããã¨ããæã£ããä½ãæ°ããäºã§ã¯ãªãã£ãã®ã§ããã
SPAã巨大ã§è¤éãªã¢ããªã±ã¼ã·ã§ã³ã«ä½¿ãããã¨ãå©ç¹ãªã®ãããããªããã ãã¤ã¦æã ããµã¼ãã¼ããHTMLãåºåãã¦ããæä»£ã¨åããããªãã©ãã¤ã ãããã³ãã¨ã³ãã«æ¥ã¦ã
- é層åãã¢ã¸ã¥ã¼ã«åãã§ããå¥éºã§é«éãªè¨è¨
- ããããããªã view ã«åæ ã§ããå¥éºã§é«éãªä»çµã¿
ãæã ã®éã«é¿ãã®ã§ã¯ãªããã¨æã£ãã
ä»é²
å¥éºãªä¸çã®æ±ã話
ã³ã³ãã¼ãã³ãã« shouldComponentUpdate ã¨ããã¡ã½ãããçããäºã§ãstate ãprops ã®å·®åãã
- æ°ããª
stateãåãã¦ãä»®æ³DOM(B)ã丸ãã¨çæããã - ä»®æ³DOM(A) 㨠仮æ³DOM(B) ãæ¯è¼ãããä»®æ³DOM(A)ã«ã©ã®ãããªæä½ãããã°ãä»®æ³DOM(B)ç¸å½ã«ãªããã®å·®åãã³ãã³ãåãã
ã®ã¹ããããå®è¡ãã¹ããããã¹ãã§ãªãããéç¥ããäºãã§ãããããã¯ãstate ãprops ãæ´æ°ããã¦ãå·®åã³ãã³ããã¼ã(夿´ç¡ã)ã«ãªããã¿ã¼ã³ã§æ¢ç´¢ãã¹ãããã§ããã®ã§ããã©ã¼ãã³ã¹ãä¸ããããããã³ã¼ãã®å¯èªæ§ãä¿å®æ§ãä¸ãã£ãããã¡ã³ããã³ã¹æã«æãã¬ç½ ã«ãªã£ããããã¨ããã®ã¯æããã ããããã
å¥éºãªä¸çã®æ±ã話2
å·®åã³ãã³ããæå°éã«ãªãã¨ã¯è¨ã£ã¦ã document.createElement ã¨ã el.appendChild ãªã©ã®ããªã¼æ§é ã®å¤æ´ã¨ããã®ã¯ç¸å¯¾çã«ã³ã¹ããé«ãã表示/é表示ãåãæ¿ããã®ã«ã¨ã¬ã¡ã³ãã®ä»ãæ¿ããè¡ããããå·®åã el.style.display = "block" or "none" ã§è§£æ±ºãããå½¢ã«ããã»ããå®DOMæ´æ°ãé«éåãããªã©ã®æ³¥ã®ç´¹ä»ããã£ãããããªã£ã¦ããã¨ã³ã¼ãããã³ãã¬ã¼ãã«æå³ãã¤ãå§ãã¦éãçæãããããã