[React] props
1. props๋? React์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ด๋ค. React์ Data Flow๋ ๋จ๋ฐฉํฅ ํ์์ผ๋ก ๋ถ๋ชจ์๊ฒ์ ์์์ผ๋ก ์ด๋ํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ๊พธ๋ก ์ฌ๋ผ๊ฐ ์ ์๋ค. ๋ฐ๋ผ์, props์ ์๋ ๋ฐ์ดํฐ๋ค์ ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ ์ค์ง ์์ ์๋ ๊ฐ์ ๊บผ๋ด์ ์ฌ์ฉํ ์๋ง ์๋ค. 2. props ์ฌ์ฉ ์์ 2-1. Hello ์ปดํฌ๋ํธ์์ name ๊ฐ ์ฌ์ฉํ๊ธฐ ๐ App.js import React from 'react'; import Hello from './Hello'; function App() { return ( ); } export default App; ๐ Hello.js import React from "react"; function Hello(props) { re..
[React] useEffect
1. useEffect ํจ์๋? React ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋๋ง๋ค ํน์ ์์ ์ ์คํํ ์ ์๋๋ก ํ๋ Hook 2. useEffect ์ฌ์ฉ๋ฒ ๐น ์ฒซ ๋ฒ์งธ useEffect(() => {}); useEffect์ ๊ฐ์ฅ ๊ธฐ๋ณธ ํํ์ด๋, ๊ฑฐ์ ์ฌ์ฉํ์ง๋ ์๋๋ค. Dependency๊ฐ ์๊ธฐ ๋๋ฌธ์, ์์ ์์๊ฐ ํ๋๋ผ๋ ๋ณํํ ๋๋ง๋ค useEffect๊ฐ ๋ฐ๋๋์ด ๋ถํ์ํ ์คํ์ด ๋ง์์ง๊ธฐ ๋๋ฌธ์ด๋ค. ๐น ๋ ๋ฒ์งธ useEffect(() => {}, []); useEffect์์ ์ค์ ํ ํจ์๊ฐ ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๊ฐ์ฅ ์ฒ์ ๋ ๋๋ง ๋ ๋๋ง ์คํํ๋ค. ๐น ์ธ ๋ฒ์งธ useEffect(() => {}, [name]); useEffect๋ฅผ ํน์ ๊ฐ์ด ์ ๋ฐ์ดํธ ๋ ๋ ํธ์ถํ๋ค. useEffect๋ฅผ ๋ ๋๋ง ํ ํ๋ฒ, ๊ทธ๋ฆฌ๊ณ ..
[React] ๋ฆฌ์กํธ ์์ํ๊ธฐ
๐ฏ ๋ฆฌ์กํธ ์ค์น ๋ฐ ์ ํ ๋ช ๋ น์ด 1. Node.js ๊ฒ์ ํ ์ต์ ๋ฒ์ ์ ์ค์นํ๋ค. 2. Visual Studio Code ์๋ํฐ๋ฅผ ์ค์นํ๋ค. 3. ์ฝ๋๋ฅผ ์์ฑํ ํด๋๋ฅผ ์์ฑํ ํ, ์๋ํฐ์์ ์์ ํด๋๋ฅผ Open Folder ํ๋ค. 4. ํฐ๋ฏธ๋์์ npx create-react-app ํ๋ก์ ํธ๋ช ์ ์ ๋ ฅํด์ ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. 5. cd ํ๋ก์ ํธ๋ช (ํด๋) ๋ช ๋ น์ด๋ฅผ ํตํด ํ๋ก์ ํธ๋ช ์ ํ์ํด๋๋ก ์ด๋ํ๋ค. 6. ์ฝ๋ ์์ฑ ํ, ํฐ๋ฏธ๋์์ npm start๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผ ์คํํ๋ค. ๐ฏ ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑ ํ ์ ๋ฆฌ ๋ฐ ํ์ธํ ํ์ผ 1. public ํด๋ > logo.png, manifest.json ์ญ์ 2. src ํด๋ > App.js์์ ์ปดํฌ๋ํธ๋ค์ ๋ก๋ ํ ์ฌ์ฉ ๐ฏ ๋ฆฌ์กํธ ํ๋ก์ ํธ git rep..
[React] ์ปดํฌ๋ํธ์ state
1. Component ์ปดํฌ๋ํธ(Component)๋, ๋ฆฌ์กํธ์ ๊ธฐ๋ณธ ๋จ์๋ก, UI๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ๋ณ์ ์ธ ๋ทฐ ๋จ์์ด๋ค. ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํ์ฌ ๋ณต์กํ ํ๋ฉด์ ๋ง๋ค ์ ์๋ค. ์ปดํฌ๋ํธ๋ JavaScript์ ํจ์ ํํ๋ก ๊ตฌํ๋๋ค. ์ปดํฌ๋ํธ๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ปดํฌ๋ํธ ํด๋์ค์ ์ด๋ฆ์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ์์ฑํ๋ค. (์ปดํฌ๋ํธ ํด๋์ค: ์ปดํฌ๋ํธ๋ฅผ ์ฐ์ด๋ด๋ ๊ณต์ฅ) 2. State setState(): ์ปดํฌ๋ํธ์ state ๊ฐ์ฒด์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์คํํ๋ค. state๊ฐ ๋ณ๊ฒฝ๋๋ฉด, ์ปดํฌ๋ํธ๋ ๋ฆฌ๋ ๋๋ง๋๋ค. state๋ ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์์ผ๋ก, Hooks์ค ํ๋์ธ useState๋ฅผ ํตํด ๋ค๋ฃฐ ์ ์๋ค. state๋ ํจ์์ ๋งค๊ฐ๋ณ์์ฒ๋ผ ์ปดํฌ๋ํธ์ ์ ๋ฌ๋๋ props์ ๋ฌ๋ฆฌ, ํจ์ ๋ด์ ์ ์ธ๋ ๋ณ์์ฒ๋ผ ์ปดํฌ๋..
[CSS] ๋ฏธ๋์ด ์ฟผ๋ฆฌ, ๋ทฐํฌํธ
1. ๋ฏธ๋์ด ์ฟผ๋ฆฌ [ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ] @media [only ๋๋ not][๋ฏธ๋์ด ์ ํ][and ๋๋ ,] (์กฐ๊ฑด๋ฌธ){์คํ๋ฌธ} ๐ and ๊ตฌ๋ฌธ ๋ค ๊ณต๋ฐฑ ํ์! [ ์ ์ฉ ๋ฐฉ๋ฒ ] [ min/max ] ํด์๋๋ณ๋ก ์น์ฌ์ดํธ๋ฅผ ๋ค์ํ๊ฒ ํํ ๊ฐ๋ฅ min : ํฌ๊ธฐ๊ฐ ์์ ์์๋๋ก ์์ฑ max : ํฌ๊ธฐ๊ฐ ํฐ ์์๋๋ก ์์ฑ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ก ํฌ๊ธฐ ๊ฐ์งํ ๋๋ ๋ทฐํฌํธ ๊ธฐ์ค์ผ๋ก ๊ฐ์ง 2. ๋ทฐํฌํธ ํ๋ฉด์์ ์ค์ ๋ด์ฉ์ด ํ์๋๋ ์์ญ Desktop : ์ค์ ํ ํด์๋ Device : ๊ธฐ๋ณธ์ผ๋ก ์ค์ ๋์ด ์๋ ๊ฐ [ ์์ฑ ] width device-width, ์์ ๋ทฐํฌํธ์ ๋๋น height device-height, ์์ ๋ทฐํฌํธ์ ๋์ด initial-scale ์์ ๋ทฐํฌํธ์ ์ด๊ธฐ ๋ฐฐ์จ, ๊ธฐ๋ณธ๊ฐ=1 user-scalable yes, ..
[CSS] ๊ฐ๋ณ ๊ทธ๋ฆฌ๋, ๋ง์ง, ํจ๋ฉ, ํฐํธ
[ ๊ณต์ ] (๊ฐ๋ณ ํฌ๊ธฐ๋ก ๋ง๋ค ๋ฐ์ค์ ๊ฐ๋ก ๋๋น / ๊ฐ๋ณ ํฌ๊ธฐ๋ก ๋ง๋ค ๋ฐ์ค๋ฅผ ๊ฐ์ธ๊ณ ์๋ ๋ฐ์ค์ ๊ฐ๋ก ๋๋น) * 100 = ๊ฐ๋ณ ํฌ๊ธฐ์ % ๊ฐ ๐ ๊ฐ๋ณ ๊ทธ๋ฆฌ๋, ๋ง์ง, ํจ๋ฉ์ ๋์ผํ๊ฒ ์ ์ฉ (๋จ, ํจ๋ฉ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ์ฉ) px๊ฐ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐํ๋ค [ id = "wrap / wrapper" ] ๋ชจ๋ ํ๊ทธ๋ฅผ ๊ฐ์ธ๋ ๋ฐ์ค ์น ๋ฌธ์ ๋ด์ฉ ์ ์ฒด์ ํฌ๊ธฐ๋ ๋ฐฐ๊ฒฝ์ ๋ฑ ํ๊บผ๋ฒ์ ์กฐ์ ๋ธ๋ผ์ฐ์ ํ๋ฉด ํฌ๊ธฐ์ ์๊ด์์ด ์น ๋ฌธ์์ ๋ด์ฉ ์ค์์ ๋ฐฐ์น ๋ฐ์ํ ์น์์ ์์ ๋ฐ์ค๋ค์ด ๊ฐ๋ณ ํฌ๊ธฐ๋ก ์ค์ ๋์์ ๋ ๋ฌด์ ํ์ผ๋ก ๋์ด๋๋ ๊ฒ ๋ฐฉ์ง ์์ ๋ฐ์ค๋ค ๊ฐ๋ณ ํฌ๊ธฐ๋ก ๋ง๋ค ๋ ๊ธฐ์ค ํฌ๊ธฐ๋ก ์ฌ์ฉ ๊ฐ์ฅ ์์์ ๋ฐ์ค -> ๊ฐ๋ณ ๊ทธ๋ฆฌ๋ ๊ณ์ฐ ์ ๊ธฐ์ค์ด ๋ ๋ฐ์ค ์์ [ ๊ฐ๋ณ ํจ๋ฉ ์ ์ฉ ๋ฐฉ๋ฒ ] ๋ฐฉ๋ฒ 1. ๊ธฐ๋ณธ ๋ฐฉ๋ฒ (๊ฐ๋ณ ํจ๋ฉ์ ์ ์ฉ..
[CSS] ๋ฐ์ํ ๋ฏธ๋์ด ์ฟผ๋ฆฌ
/* Large desktop */ @media (min-width: 1500px) { ... } /* Portrait tablet to landscape and desktop */ @media (min-width: 768px) and (max-width: 979px) { ... } /* Landscape phone to portrait tablet */ @media (max-width: 767px) { ... } /* Landscape phones and down */ @media (max-width: 480px) { ... }
[CSS] em, rem ๊ทธ๋ฆฌ๊ณ css์ ๋จ์๋ค
.selector { property: value; } Absolute length units : px Relative length units : em, rem, vw, vh, % 1. em - typography์์ ํ์ฌ ์ง์ ๋ point size ๋ํ๋ด๋ ๋จ์ / ํ์ฌ ํฐํธ size ๋ํ๋ - ์ ํ๋ ํฐํธ์ ์๊ด์์ด ํญ์ ๊ณ ์ ๋ ํฐํธ ์ฌ์ด์ฆ ๊ฐ์ง๋ค - ๋ถ๋ชจ์ ํฐํธ์ฌ์ด์ฆ์ ์๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๊ณ์ฐ๋๋ค - ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ํฐํธ : 16px - ex) 8em = 16 * 8 = 128px = 800% 2. rem - root em - root์ ์ง์ ๋ ํฐํธ์ฌ์ด์ฆ์ ๋ฐ๋ผ ํฌ๊ธฐ ๊ฒฐ์ 3. vw, vh, wmin, wmax - ๋ถ๋ชจ ์์์๋ ์๊ด ์๋ค, ๋ธ๋ผ์ฐ์ ์ ํฌ๊ธฐ์ ์์กด - 100vw : viewport ๋..