-
-
-
๊ฐ์ฒด๋ก ๋ฌธ์ ๊ตฌ์กฐ๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ์ผ๋ก XML์ด๋ HTML๋ก ์์ฑ
-
์น๋ธ๋ผ์ฐ์ ๋ DOM์ ํ์ฉํ์ฌ ๊ฐ์ฒด์ ์๋ฐ์คํฌ๋ฆฝํธ์ CSS๋ฅผ ์ ์ฉ.
-
DOM์ ํธ๋ฆฌ ํํ๋ผ ํน์ node๋ฅผ ์ฐพ๊ฑฐ๋ ์์ , ์ ๊ฑฐ, ์ํ๋ ์์น์ ์ฝ์ ๊ฐ๋ฅ.
-
๋์ UI์ ์ต์ ํ ๋์ด์์ง ์์.
-
DOM ์์ฒด๋ ๋น ๋ฅด์ง๋ง ์น ๋ธ๋ผ์ฐ์ ์์ DOM์ ๋ณํ๊ฐ ์ผ์ด๋๋ฉด ์น ๋ธ๋ฌ์ฐ์ ๊ฐ CSS๋ฅผ ๋ค์ ์ฐ์ฐํ๊ณ , ๋ ์ด์์์ ๊ตฌ์ฑํ๊ณ ํ์ด์ง๋ฅผ ๋ฆฌํ์ธํธํ๋ฉด์ ์๊ฐ์ด ํ๋น๊ฐ ๋จ.
=> ๊ทธ๋ฌ๋ฏ๋ก react์์๋ virtual DOM ๋ฐฉ์์ ์ฌ์ฉํ์ฌ DOM ์ ๋ฐ์ดํธ๋ฅผ ์ถ์ํํจ์ผ๋ก์จ DOM ์ฒ๋ฆฌ ํ์๋ฅผ ์ต์ํ ํ๊ณ ํจ์จ์ ์ผ๋ก ์งํ.
-
-
- ์ค์ DOM์ ์ ๊ทผํ์ฌ ์กฐ์ํ๋ ๋์ , ์ด๋ฅผ ์ถ์ํํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ์ฌ ์ฌ์ฉ
- DOM ์
๋ฐ์ดํธ ์ ์ฐจ
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ์ ์ฒด UI๋ฅผ Virtual DOM์ ๋ฆฌ๋ ๋๋งํฉ๋๋ค.
- ์ด์ Virtual DOM์ ์๋ ๋ด์ฉ๊ณผ ํ์ฌ ๋ด์ฉ์ ๋น๊ตํฉ๋๋ค.
- ๋ฐ๋ ๋ถ๋ถ๋ง ์ค์ DOM์ ์ ์ฉํฉ๋๋ค.
-
-
import ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ๋ถ๋ฌ์ด
import React, { Component } from 'react'; import fs from 'fs'; import logo from './logo.svg'; // file-loader๋ฅผ ํตํด ๋ฏธ๋์ด ํ์ผ ๋ถ๋ฌ์ค๊ธฐ import './App.css'; // css-loader๋ฅผ ํตํด CSS ํ์ผ ๋ถ๋ฌ์ค๊ธฐ // ์ด์ ๋ฌธ๋ฒ var React = require('react'); var Component = React.Component;
Class ๋ฌธ๋ฒ
class App extends Component{ ... }
Render(): ์ปดํฌ๋ํธ๋ฅผ ์ ์ ์๊ฒ ์ด๋ป๊ฒ ๋ณด์ผ์ง return
์์ ๋ฐ์ดํ๋ ํฐ ๋ฐ์ดํ๋ก ๊ฐ์ธ์ง ์์ ์ฝ๋ = JSX
render(){ return ( <div className="App"> </div> ) }
-
-
์ปดํฌ๋ํธ์ ์ฌ๋ฌ ์์๊ฐ ์๋ค๋ฉด ๋ถ๋ชจ ์์ ํ๋๋ก ๊ผญ ๊ฐ์ธ์ผํ๋ค.
// ์ค๋ฅ๊ฐ ๋๋ ์ฝ๋ import React, { Component } from 'react'; class App extends Component{ render(){ return( <h1> ๋ฆฌ์กํธ </h1> <h2> Awesome </h2> ) } } export default App;
// ์ค๋ฅ๊ฐ ๋์ง ์๋ ์ฝ๋ (div๋ก ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ์ค) import React, { Component } from 'react'; class App extends Component{ render(){ return( <div> <h1> ๋ฆฌ์กํธ </h1> <h2> Awesome </h2> </div> ) } } export default App;
Fragment: div์ ๊ฐ์ ๊ฒ์ผ๋ก ๊ฐ์ธ์ง ์๊ณ ์ฌ๋ฌ ์์๋ฅผ ๋ ๋๋ง ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
import React, { Component } from 'react'; class App extends Component{ render(){ return( <Fragment> <h1> ๋ฆฌ์กํธ </h1> <h2> Awesome </h2> </Fragment> ) } } export default App;
์๋ฐ์คํฌ๋ฆฝํธ ํํ: JSX ๋ด๋ถ์์ ์ฝ๋๋ฅผ { }๋ก ๊ฐ์ธ๊ธฐ.
import React, { Component } from 'react'; class App extends Component{ render(){ const text = "Awesome" return( <div> <h1> ๋ฆฌ์กํธ </h1> <h2> {text} </h2> </div> ) } } export default App;
์กฐ๊ฑด๋ถ ์ฐ์ฐ์
import React, { Component } from 'react'; class App extends Component{ render(){ const text = "Awesome" return( <div> <h1> ๋ฆฌ์กํธ </h1> <h2> {text} </h2> { condition ? '์ฐธ' : '๊ฑฐ์ง' } </div> ) } } export default App;
์ธ๋ผ์ธ ์คํ์ผ๋ง
import React, { Component } from 'react'; class App extends Component{ render(){ const text = "Awesome" const condition = true; const style = { backgroundColor: 'gray', border: '1px solid black', height: Math.round(Math.random() * 300) + 50, width: Math.round(Math.random() * 300) + 50, WebkitTransition: 'all', MozTransition: 'all', msTransition: 'all' }; return( <div> <h1> ๋ฆฌ์กํธ </h1> <h2> {text} </h2> {condition && '๋ณด์ฌ์ฃผ์ธ์'} <div style={style}></div> </div> ) } } export default App;
๊ผญ ๋ซ์์ผ ํ๋ ํ๊ทธ (input / br ๋ฑ)
<form> First name: <br/> <input type="text" name="firstname" /><br/> Last name: <br/> <input type="text" name="lastname" /><br/> </form>
-