๐ป Deep Wide Programming/React (7) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [React JS] ๋ฆฌ์กํธ ๊ธฐ๋ณธ ํ์ต ๋ฉ๋ชจ 1. Node, npm, npx, git ์ค์น 1.node.js ์ค์น(ํํ์ด์ง์์. ์ค์นํ์ธ : node -v / npm ์ค์นํ์ธ : npm -v) 2. ์ฝ์์์ npm install npx -g (์ค์นํ์ธ: npx -v) 3. VSC ์ค์น(๋ค๋ฅธ ์ฝ๋ ์๋ํฐ ์จ๋ ๋จ) 4. git ์ค์น(์ค์น ํ์ธ:์ฝ์์์ git --version) ๋ฆฌ์กํธ ์ปดํ์ผ create-react-app ๋ฆฌ์กํธ์ ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์, ์ด๊ฒ์ ์ ์ ํ๊ธฐ ์ํด Web pack๊ณผ Babel์ ๋ค์ด๋ก๋ ํด์ผํ๊ณ , ์ปดํ์ผ์ ํ๋ ๊ทธ๋ฐ ๋ณต์กํ๊ณ ๊ท์ฐฎ์ ์์ ์ด ํ์ํ๋ค. ๊ทธ๋ฐ๋ฐ, ์ด์ ๋ create-react-app์ด๋ผ๋ ๊ฑธ ํตํด์, ํ๋์ ๋ช ๋ น์ผ๋ก React Web app์ Set upํ๊ฒ ๋์๋ค. 1. node js np.. [์ํ์ฝ๋ฉ ๋ฆฌ์กํธ] ์ด๋ฒคํธ state ๋ณ๊ฒฝํ๊ธฐ (feat. bind ํจ์, setStateํจ์) ๐์ด๋ฒคํธ ์ค์น (1); ํ ์คํธ (๋งํฌ ํด๋ฆญ์, alert์ฐฝ ๋์ฐ๊ธฐ) ๐์ด๋ฒคํธ ์ค์น (2); ๋ค์ํ์ด์ง๋ก ์ด๋ ์ค์ง ๐"mode ์ค์ & render ๋ถ๋ถ"๊ณผ "์ด๋ฒคํธ๋ฅผ ์ค์นํ ๋ถ๋ถ"์ ์ฐ๊ฒฐํด์ฃผ๋ฉด ๋๋ค. โข๐ ์ฐ๊ฒฐ์ํค๋ ๋ฐฉ๋ฒ *์ด๋ฒคํธ ํจ์ ์์์ 'this'์ ๊ฐ์ ์๋ฌด๊ฒ๋ ๊ฐ๋ฆฌํค์ง ์๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฌ๋ค.* โข ์ด๋ฒคํธ ํจ์ ๋ฐ๋ก ๋ค์, '.bind(this)'๋ฅผ ์ถ๊ฐํ์ฌ this์ ๊ฐ์ ์์ฑํ ์ ์๋ค. โ ๋ ํ๋์ ์์ ์ด ํ์ํ๋ค. ๋ฆฌ์กํธ์ ์ธ์ด 'setState({})'๋ก ๋ชจ๋๋ฅผ ์ ํํด์ฃผ์ด์ผ ์๋ํ๊ธฐ ๋๋ฌธ. this.state.mode = 'Greeting'; ์ผ๋ก๋ ์๋ํ์ง ์๋๋ค. ๋ฆฌ์กํธ ์ธ์ด๋ก ๋ชจ๋ ์ ํ์ ํด์ฃผ๋, ๋น๋ก์ ์์์ ์ธํ ํด์ค greeting์ ๋ชจ๋์ ๊ฐ๋ค๋ก ๋ก๋๊ฐ ๋์๋ค. .. [์ํ์ฝ๋ฉ ๋ฆฌ์กํธ] 14. ๋ณ๋์ ํ์ผ๋ก ์ปดํฌ๋ํธ ์ ๋ฆฌ, 15. state 1. props : ์ฌ์ฉ์๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ๋ ์ค์ํ ๊ฒ์ด๊ณ , 2. state๋ ๊ทธ props ๊ฐ์ ๋ฐ๋ผ ๋ด๋ถ์์ ๊ตฌํ์ ํ์ํ ๋ฐ์ดํฐ๋ค์ด๋ค. : ์ข๋ ๋ค์ํ ์ผ์ ํ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํ์ํ state์ ๊ฐ๋ ! props๋ฅผ ๋ ์ ํ์ฉํ ์ ์๊ฒ ๋ ๊ฒ. ์์ ์ฝ๋ ์์ ์ปดํฌ๋ํธ ์์๋ค title, sub ๊ฐ๋ค์ ์ ๋ ๊ฒ ์ ์ด์ฃผ๋๊ฒ ์ง์ ๋ถํด์ ์๋ก ์ ํ๊ณ ๋ฐ๋ก ๋นผ์ฃผ๋ ค๊ณ ํ๋ค. ๊ทธ๋ ํ์ํ ๊ฒ์ด ๋ฐ๋ก ํ๋จ์ constructor(props){ super(props); here it goes } ์ ๊ธฐ ์์ ํ์ํ ์ฝ๋๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด๋ค. ์๊ธฐ ๋ด๊ธด ์ฝ๋๋ค์ด ๊ฐ์ฅ ๋จผ์ ์คํ๋๊ฒ ๋๋ค. ํ๋จ์ ์ฝ๋์ ๊ฐ์ด ์์ ! [์ํ์ฝ๋ฉ ๋ฆฌ์กํธ] ๋ฆฌ์กํธ๋ฅผ ๋์์ฃผ๋ ํฌ๋กฌ ํ์ฅ์ฑ ๋ฆฌ์กํธ ๋๋ฒจ๋กํผ ํด์ ๊น๊ณ , ๊ธฐ์กด์ ๋ง๋ค์ด๋จ๋ ์น์ inspect๋ก ๋ค์ด๊ฐ๋, ์๋ก์ด ํญ์ด ์์ฑ๋์๋ค. ์ด๊ณณ์์ ์๋๋ ํ์ ํ ์ ์์๋ ๋ฆฌ์กํธ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌ๊ฐ๋ฅํด์ก๋ค. ๋๋ฐ! [์ํ์ฝ๋ฉ ๋ฆฌ์กํธ] props๋ฅผ ์ฌ์ฉํ ๋ฆฌํฉํ ๋ง ๐Props ๊ณต์๋ฌธ์ ์ฐธ๊ณ ! reactjs.org/docs/getting-started.html Getting Started – React A JavaScript library for building user interfaces reactjs.org ์ปดํฌ๋ํธ ๋ง๋๋ ๋ฒ์ด๋ค. class Welcome extends React.Component { render() { return Hello, {this.props.name}; } } ํ์ด๋ผ์ดํธ๋ ๋ถ๋ถ์ ์ฃผ๋ชฉํ์ ๐์ ์ฉํด๋ณด๊ธฐ ๐๋๋ ํด๋ณด์ [์ํ์ฝ๋ฉ ๋ฆฌ์กํธ] 10-11๊ฐ ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ ๐๋ฆฌ์กํธ ๋ณธ๊ฒฉ ์ฌ์ฉ์ฐ์ต ์์ ๋ฆฌ์กํธ ์์ด ๋ง๋ html ํ๊ฒฝ์, ๋ฆฌ์กํธ์ ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํด์ remadeํ๋๋ก ํ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์ฌํํ html ์ฐ์ต ํ์ผ์ ํ๋ ๋ง๋ค์ด์ค ๋ค, ๋ฆฌ์กํธ์ src ๋๋ ํ ๋ฆฌ์ App.js๋ฅผ ์ด์ด์ค๋ค. class App extends Component { render() { return ( Hello react!! ); } } ๋ฐ๋ก ์ด๋ถ๋ถ์ด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ์ฝ๋๋ค. (๋งํ์๋ฉด ํ ํ๋ฆฟ ๊ฐ์ ๊ฒ์ผ๋ก ์ดํดํ์. ๊ฐ์ฒด์งํฅ์ ์ดํดํ๋ฉด ์ข ๋ ์ ์ดํดํ ์ ์์ง๋ง ์ฌ๊ธฐ์๋ ์ผ๋จ ํจ์ค) ๐๋ฅผ Subject๋ผ๋ ์ปดํฌ๋ํธ๋ก ๋ง๋ค๊ธฐ ๐์ด๋, ์ฃผ์์ฌํญ! 1. ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๋๋ ๋ฐ๋์, ํ๋์ ์ต์์ ํ๊ทธ๋ง์ ํฌํจํด์ผ ํ๋ค. 2. ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋๋ฌธ์๋ก ์์ํ๋ค. ์ค์ App.js์๋ ํ๊ทธ.. [์ํ์ฝ๋ฉ ๋ฆฌ์กํธ] 1-7๊ฐ ๋ฆฌ์กํธ ๊ธฐ๋ณธ, ๊ณต๋ถ์ ๋ต, ํ์ตํ๊ฒฝ ์ค์ 1. ๋ฆฌ์กํธ- ์ปดํฌ๋ํธ๊ธฐ๋ฅ 1) ๊ฐ๋ ์ฑ์ ๋์ฌ์ค 2) ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ค 3) ์ ์ง๋ณด์๊ฐ ํจ์ฌ ๋ ํธ๋ฆฌํด์ง 2. ๋ฆฌ์กํธ ๊ณต๋ถ ์ ๋ต ๐๊ณต๋ถ Tip ๋ฆฌ์กํธ ๊ณต์๋ฌธ์์ ์นํด์ง๊ธฐ * reactjs.org * 3. ๋ฆฌ์กํธ ํ์ตํ๊ฒฝ ์ฝ๋์๋๋ฐ์ค๋ฅผ ์ด์ฉํด ๊ฐํธํ ๋ฆฌ์กํธ ํ์ตํ๊ฒฝ์ ์ฌ์ฉํ ์ ์๋ค. codesandbox.io/s/new React - CodeSandbox React example starter project codesandbox.io 4. Terminal์ ํตํด create-react-app install์ ๋ง์น๋ค, VS code์ ํฐ๋ฏธ๋์์ ๋ค์์ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ค. npm run start ๋ผ๊ณ ์น๊ณ ์ํฐ๋ฅผ ๋๋ฌ ์คํํ๋ค. (์ข ๋ฃ๋ฅผ ์ํ ๋๋ command + c๋ฅผ ๋๋ฅธ๋ค.) ์๋ฐ ํ๋ฉด๋ค์ด ๋จ๊ฒ ๋๋ค. .. ์ด์ 1 ๋ค์