
๋ผ์ฐํ ์ด๋? ์ฌ์ฉ์๊ฐ ์์ฒญํ URL์ ๋ฐ๋ผ ์๋ง์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ํ๋ก์ ํธ๋ฅผ ํ๋์ ํ์ด์ง๋ก ๊ตฌ์ฑํ ์๋ ์๊ณ , ์ฌ๋ฌ ํ์ด์ง๋ก ๊ตฌ์ฑํ ์๋ ์์ต๋๋ค. ์ฌ๋ฌ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ํ์ด์ง ๋ณ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํด๊ฐ๋ฉด์ ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ์ํ ๊ฒ์ด ๋ฐ๋ก ๋ผ์ฐํ ์์คํ ์ ๋๋ค. ๐ ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฝ๊ฒ ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ก ์ฑ๊ธํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. SPA๋ ์ด๋ฆ ๊ทธ๋๋ก ํ์ด์ง ํ๋๋ก ๋์๊ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๊ธฐ ๋๋ฌธ์ ํ์ด์ง ์ด๋์ ๋ฒ๋ฒ ์ ์์ด ๋ถ๋๋ฝ๊ฒ ์ ํ๋์ง๋ง, ์น ํ์ด์ง ์ ๋ณด๊ฐ ์๊ธฐ ๋๋ฌธ์ SEO์๋ ๋งค์ฐ ์ทจ์ฝํฉ๋๋ค. ํ๋ ์ด๋ HTML metaํ๊ทธ์ ์ ๋ณด๋ฅผ ์ฌ๋ฆฌ๋ฉด ๋์ด์ ํฌ๊ฒ ๊ฑฑ์ ํ ์ ๋๋ ์๋๋๋ค. ์ต๊ทผ์๋ ์ด๋ฐ..

๋ฆฌ์กํธ์์ ์ปดํฌ๋ํธ๋ฅผ ์คํ์ผ๋ง ํ ๋๋ ๋ค์ํ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ฌ๋ง๋ค ์๊ตฌํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๊ณ ๊ฐ๋ฐ์๋ง๋ค ๊ฐ์ ์ทจํฅ์ ๋ฐ๋ผ ์ ํํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ฃผ ์ฌ์ฉ๋๋ ์คํ์ผ๋ง ๋ฐฉ์ ์ผ๋ฐ CSS : ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์ Sass : ์์ฃผ ์ฌ์ฉ๋๋ CSS ์ ์ฒ๋ฆฌ๊ธฐ ์ค ํ๋๋ก ํ์ฅ๋ CSS ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ CSS ์ฝ๋๋ฅผ ๋์ฑ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋ก ํด ์ค๋๋ค. CSS Module : ์คํ์ผ์ ์์ฑํ ๋ CSS ํด๋์ค๊ฐ ๋ค๋ฅธ CSS ํด๋์ค์ ์ด๋ฆ๊ณผ ์ ๋ ์ถฉ๋ํ์ง ์๋๋ก ํ์ผ๋ง๋ค ๊ณ ์ ํ ์ด๋ฆ์ ์๋์ผ๋ก ์์ฑํด ์ฃผ๋ ์ต์ ์ ๋๋ค. styled-components : ์คํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ด์ฅ์ํค๋ ๋ฐฉ์์ผ๋ก ์คํ์ผ์ ์์ฑํจ๊ณผ ๋์์ ํด๋น ์คํ์ผ์ด ์ ์ฉ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์๊ฒ ํด์ค๋๋ค. ๐ฎ ๋ฆฌ์ก..

Hook ๋ฆฌ์กํธ ๋ฒ์ 16.8์ ์๋ก ๋์ ๋ ๊ธฐ๋ฅ ์ ๋๋ค. ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ useState, ๋ ๋๋ง ์งํ ์ค์ ํ๋ useEffect ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ธฐ์กด์ ํจ์ํ ์ปดํฌ๋ํธ์์ ํ ์ ์์๋ ๋ค์ํ ์์ ์ ํ ์ ์๋๋ก ํฉ๋๋ค. Hook์ ํจ์ ์ปดํฌ๋ํธ์์ React state์ ์๋ช ์ฃผ๊ธฐ ๊ธฐ๋ฅ์ ์ฐ๋ํ ์ ์๊ฒ ํด์ฃผ๋ ํจ์ ์ ๋๋ค. โญ๏ธ useState useState()๋ ๋ฆฌ์กํธ์์ ์ํ(state)๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ๊ณต๋๋ hook ์ ๋๋ค. useState()๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ปดํฌ๋ํธ๊ฐ ์๋์ผ๋ก ๋ค์ ๋ ๋๋ง ๋ฉ๋๋ค. useState()๋ ๋ฐฐ์ด ํํ๋ก ๋ณํ๋๋ฉฐ, ์ฒซ ๋ฒ์งธ ์์๋ 'ํ์ฌ ์ํ'์ด๊ณ , ๋ ๋ฒ์งธ..

๋ฆฌ์กํธ์์ ๋ฐฐ์ด๊ณผ ๋งต์ ์ปดํฌ๋ํธ ๋ ๋๋ง์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ฐฐ์ด์ ์์๊ฐ '์๋' ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก, ๊ฐ ์์๋ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋งต์ key์ value๋ฅผ ๊ฐ์ง๋ ๊ตฌ์กฐ๋ก, key์ value ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ key๋ ์ค๋ณต๋์ง ์๋ ๊ณ ์ ํ ๊ฐ ์ ๋๋ค. ๊ณ ์ ๋ฐฐ์ด ๋ ๋๋ง ๐ ๋นํจ์จ ์ ์ธ ๋ฐฉ๋ฒ : ๋ฐฐ์ด ๊ทธ๋๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ import React from 'react'; const ArrayTest = () => { const users = [ { id: 100, userName: 'Karly', eMail: 'king@naver.com' }, { id: 200, userName: 'Elastine', eMail: 'hoho@gmail.com' }, { id: 300, userN..

Ref ์ฐธ์กฐ(reference)์ ์ค์๋ง๋ก, React์์ DOM ์์๋ ํด๋์ค ์ปดํฌ๋ํธ ์ธ์คํด์ค์ ๋ํ ์ง์ ์ ์ธ ์ฐธ์กฐ๋ฅผ ์์ฑํ๊ณ , ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฐ์ฒด ์ ๋๋ค. ์ฌ์ฉ ๋ชฉ์ DOM ์์์ ๋ํ ์ฐธ์กฐ ๐ Ref๋ฅผ ์ฌ์ฉํ์ฌ DOM ์์๋ฅผ ์ง์ ์กฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํฌ์ปค์ค ์ค์ , ํ ์คํธ ์ ํ, ์ ๋๋ฉ์ด์ ๋ฑ์ ๊ตฌํํ ๋ ์ ์ฉํฉ๋๋ค. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์ id๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ ์ด์ !!! ๐ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ์์์๋ id๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. JSX ์์์ DOM์ id๋ฅผ ๋ฌ๋ฉด ํด๋น DOM์ ๋ ๋๋ง ํ ๋ ๊ทธ๋๋ก ์ ๋ฌ ๋ฉ๋๋ค. ํ์ง๋ง ํน์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์์ต๋๋ค. ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๋ ๊ฒฝ์ฐ ์ ์ผํด์ผ ํ id๊ฐ ์ค๋ณต id๋ก ๋ง๋ค์ด์ง๊ฒ ๋ฉ๋๋ค. useRef Reac..

๋ฆฌ์กํธ์์ ์ด๋ฒคํธ ํธ๋ค๋ง์ HTML๊ณผ '๋น์ท'ํ๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ JSX ์์์ props๋ก ์ ๋ฌ๋๋ฉฐ, ํจ์ ํํ๋ก ์์ฑ ๋ฉ๋๋ค. ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์ ์ ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ์ด๋ฒคํธ์ ์ฐ๊ฒฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์์์ ์ํ ์ ๋ฐ์ดํธ import React, {useState} from "react"; const EventHandler = () => { const [message,setMessage] = useState("์๋ ํ์ธ์."); // ๊ฐ์ด ์๋ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์ํ๊ฐ ๋ณํ๋์ง ํ๋จํจ. const changeMessage= (e) => { setMessage(e.target.value); } return ( ์ด๋ฒคํธ ์ฐ์ต ์ ๋ ฅ ๋ฐ์ ๋ฉ์์ง : {message} ); } export defau..

๋ค์ด๊ฐ๊ธฐ ์ ์ ... ๐ ๋ฆฌ์กํธ 16.8 ์ด์ ๋ฒ์ ์์๋ ํจ์ ์ปดํฌ๋ํธ์์ state๋ฅผ ์ฌ์ฉํ ์ ์์์ต๋๋ค. ํ์ง๋ง 16.8 ๋ถํฐ๋ useState๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ปดํฌ๋ํธ์์๋ state๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค. ์ฌ์ฉ๋ฒ์ ํด๋์ค ์ปดํฌ๋ํธ์ ์กฐ๊ธ ๋ค๋ฅธ๋ฐ์. ์ด ๊ณผ์ ์์ Hook์ ์ฌ์ฉํฉ๋๋ค. โญ๏ธ ๋ฐฐ์ด ๋น๊ตฌ์กฐํ ํ ๋น ๋ฐฐ์ด ์์ ๋ค์ด์๋ ๊ฐ์ ์ฝ๊ฒ ์ถ์ถํ ์ ์๋๋ก ๋์์ฃผ๋ ES6 ๋ฌธ๋ฒ ์ค ํ๋ ์ ๋๋ค. // ์์ 1.(๊ฐ์ฒด ๋ฆฌํฐ๋ด) const person = { name: 'ํ๊ธธ๋', age: 30, address: '์์ธ์ ๊ฐ๋จ๊ตฌ', email: 'honggildong@naver.com' } const { name, age } = person; // ์์ 2. (๋ฐฐ์ด) const col..

์ปดํฌ๋ํธ? UI๋ฅผ ๊ตฌ์ฑํ๋ ๋ ๋ฆฝ์ ์ธ ๋ชจ๋ ์ ๋๋ค. ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ ์ปดํฌ๋ํธ๋ ์์ฒด์ ์ธ UI์ ์ํ(state)๋ฅผ ๊ฐ์ง๋๋ค. props์ state๋ฅผ ๊ฐ์ง๋๋ค. ๋๋ฌธ์๋ก ์์ํ๊ณ , return๋ฌธ์๋ UI์์๋ฅผ ์์ฑํฉ๋๋ค. (React๋ ์๋ฌธ์๋ก ์์ํ๋ ์ปดํฌ๋ํธ๋ฅผ DOM ํ๊ทธ๋ก ์ฒ๋ฆฌ ํจ) props : ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌ๋๋ ๋ฐ์ดํฐ state : ์ปดํฌ๋ํธ ์์ฒด์์ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ, state๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ปดํฌ๋ํธ๋ ๋ค์ ๋ ๋๋ง ๋จ.(โญ๏ธhook) ์ปดํฌ๋ํธ๋ ํจ์ํ ์ปดํฌ๋ํธ์ ํด๋์ค ์ปดํฌ๋ํธ๋ก ๋๋ ์ ์์ต๋๋ค. ํจ์ํ ์ปดํฌ๋ํธ๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ UI๋ฅผ ๊ตฌ์ฑํ๋ ์ปดํฌ๋ํธ์ ๋๋ค. ํด๋์คํ ์ปดํฌ๋ํธ๋ณด๋ค ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์์ผ๋ฉฐ, ์ต๊ทผ์๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ถ์ธ์ ๋๋ค. ๊ทธ..

JSX ? JSX (JavaScript XML)์ JavaScript ์ธ์ด์ ํ์ฅ์ผ๋ก, ๊ฐ๋ฐ์๋ค์ด JavaScript ์ฝ๋ ๋ด์์ HTML๊ณผ ์ ์ฌํ ๊ตฌ๋ฌธ์ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ์ธ๊ธฐ์๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. JSX๋ฅผ ์ฌ์ฉํ๋ฉด HTML์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ JavaScript์ HTML์ ํผํฉ๋ฌผ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. JSX(JavaScript XML)๋ Javascript์ XML์ ์ถ๊ฐํ ํ์ฅํ ๋ฌธ๋ฒ์ด๋ค. JSX๋ ๋ฆฌ์กํธ๋ก ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ๋๋ฏ๋ก ๊ณต์์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์คํํ๊ธฐ ์ ์ ๋ฐ๋ฒจ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค. JSX๋ ํ๋์ ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ..

๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฐ์ธ ๋๋, ๊ทธ๊ฒ์ด ์ด๋์ ์๋์ง ํ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค. - GiangStepDEV Why React? ์์ ํ ๋์ง ์ผ๋ง ์ ๋ ๋ฆฌ์กํธ, ์ ์ด๋ ๊ฒ ํซํ ๊น์? ๋ชจ๋ ๊ธฐ์ ํธ๋ ๋๋ ๊ทธ๊ฒ์ด ๋์ค๊ฒ ๋ ๋ฐฐ๊ฒฝ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด ์ ์ ์์ต๋๋ค. ํ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๊ฐ๋จํ ์ฐ์ฐ์ ํ๊ฑฐ๋ ์๊ฐ์ ์ธ ํจ๊ณผ๋ฅผ ์ฃผ๋ ๋จ์ํ ์คํฌ๋ฆฝํธ ์ธ์ด์ ๋ถ๊ณผํ์ง๋ง ํ์ฌ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค. ๋ ๋์๊ฐ ์์ญ์ ํ์ฅํ์ฌ ์๋ฒ์ฌ์ด๋๋ ๋ฌผ๋ก ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์์ฒญ๋ ํ์ฝ์ ํ๊ณ ์์ต๋๋ค. ๋ณต์กํ๊ณ ๊ฑฐ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก ๊ด๋ฆฌํ๊ธฐ์๋ ๋ณต์ก๋๊ฐ ๋งค์ฐ ์ฆ๊ฐํฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ง์ ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅํ์์ผ๋ฉฐ, ์ด ํ๋ ์์ํฌ๋ค์ ์ฃผ๋ก..