ํ๋ก ํธ์๋ ๊ฐ๋ฐ
42
[์ค์ต] ๋๊ธ ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ (๋ฆฌ์กํธ)
1. ํด๋ ๊ตฌ์กฐ 2. Comment.jsx import React from "react"; const styles = { wrapper: { margin: 8, padding: 8, display: "flex", flexDirection: "row", border: "1px solid grey", borderRadius: 16, }, imageContainer: {}, image: { width: 50, height: 50, borderRadius: 25, }, contentContainer: { marginLeft: 8, display: "flex", flexDirection: "column", justifyContent: "center", }, nameText: { color: "black", fon..
2024.01.14
ํ๋ก ํธ์๋ ๊ฐ๋ฐ/React - ์ด๋ก
Component ํฉ์ฑ๊ณผ ์ถ์ถ
1. ๊ฐ์ ์ด๋ฒ ์ฅ์์๋ ์ปดํฌ๋ํธ๋ฅผ ํฉ์น๊ณ ์๊ฒ ์ชผ๊ฐ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ฐฐ์ฐ๊ฒ ๋ค. ์์๋ค์ํผ React์ ์ ๋
์ '๋ ๊ณ ์ฒ๋ผ ์กฐ๋ฆฝ' ์ด๋ค. ์ฌ๊ธฐ์ ๋ ๊ณ ์ ์ญํ ์ ํ๋ ๊ฒ์ด ์ปดํฌ๋ํธ์ด๋ค. ๊ทธ๋ ๊ทธ๋ ์
๋ง์ ๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ๋ถ์ด๊ณ ๋ผ๊ณ ๋ฅผ ๋ฐ๋ณตํด์, ์ํ๋ ๋ชจ์์ ์กฐ๋ฆฝํ๋ฉด ๋๋ค. ๊ทธ ๋ ๊ณ ๋ฅผ ๋ถ์ด๊ณ ๋ผ๋ ๋ฒ์ ๋ฐฐ์ฐ์. 2. Component ํฉ์ฑ ์์ ๊ฐ์ด ํ๋์ ํฐ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์์ ์ปดํฌ๋ํธ๋ค์ ์กฐํฉํ๋ ํ์๋ฅผ ์ปดํฌ๋ํธ ํฉ์ฑ์ด๋ผ ํ๋ค. ์์ ์์๋ ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ๋ฒ ์ผ์ง๋ง, ๊ฐ๊ธฐ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ํฉ์ณ๋ ๋๋ค. 3. ์ปดํฌ๋ํธ ์ถ์ถ ์ปดํฌ๋ํธ ์ถ์ถ์ ๋๋ฌด ํฐ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉ์ฑ์ ์ํด์ ์ฌ๋ฌ ์์ ์ปดํฌ๋ํธ๋ก ์๊ฒ ์ชผ๊ฐ๋ ์์
์ ์๋ฏธํ๋ค. ํฐ ์ปดํฌ๋ํธ๋ก ๋ค์ด์ค๋ props ์ค ์ผ๋ถ๋ฅผ ๋ค์ props๋ก ๋ฐ..
2024.01.14
ํ๋ก ํธ์๋ ๊ฐ๋ฐ/React - ์ด๋ก
Component์ ์ข
๋ฅ์ ๋ง๋๋ ๋ฐฉ๋ฒ
1. ๊ฐ์ ์ด์ ์ปดํฌ๋ํธ, React Elements, DOM Elements์ ๋ํ ๊ฐ๋
์ ์ดํด๋ ์ ๋ฒ ํฌ์คํ
๋ค์ ํตํด ์กํ์ ๊ฒ์ด๋ค. ์ด์ ๋ ์ปดํฌ๋ํธ๋ฅผ ์ง์ง ์ฌ์ฉํ๊ธฐ ์ํด ์ปดํฌ๋ํธ์ ์ข
๋ฅ์ ๊ทธ๊ฒ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ๋ค. 2. ์ปดํฌ๋ํธ์ ์ข
๋ฅ ์ปดํฌ๋ํธ์ ์ข
๋ฅ์๋ ํฌ๊ฒ ํจ์ํ ์ปดํฌ๋ํธ์ ํด๋์คํ ์ปดํฌ๋ํธ๊ฐ ์๋ค. ํด๋์คํ ์ปดํฌ๋ํธ๋ ์ฐ๋ ๋ฐฉ๋ฒ์ด ๋ณต์กํ๊ณ ์ด๋ ต๋ค๋ ์๊ฒฌ์ด ๋ง์์ ์์ฆ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒ์ ํจ์ํ ์ปดํฌ๋ํธ์ด๋ค. ํจ์ํ ์ปดํฌ๋ํธ๋ ๋ง ๊ทธ๋๋ก ํจ์ ํํ๋ก ๋์ด์๋ค. ๋ค์ ์์๋ฅผ ๋ณด์. ์ด๊ฑฐ ๋ง๊ณ ์ต๋ช
ํจ์ ํํ๋ก ์จ๋ ๋๋ค. const Welcome = (props) => { //... } ํด๋์คํ ์ปดํฌ๋ํธ๋ ์ฐ๋ฆฌ๊ฐ ์๋ฐ ๊ฐ์ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ฅผ ์ธ ๋ ํ์ธํ ์ ์๋ ํํ ๊ทธ๋๋ก ์ด๋ค. ๋ค..
2024.01.14
ํ๋ก ํธ์๋ ๊ฐ๋ฐ/React - ์ด๋ก
Props์ ๋ํ์ฌ (๋ฆฌ์กํธ)
1. ๊ฐ์ ์ฌ๊ธฐ์๋ Props์ ํน์ง๊ณผ ์ฌ์ฉ๋ฒ์ ๋ํ์ฌ ์์๋ณด๊ฒ ๋ค. 2. Props์ ํน์ง Props์ ๊ฐ์ฅ ์ค์ํ ํน์ง์ READ_ONLY ๋ผ๋ ํน์ง์ด๋ค. ์ฝ๊ธฐ ๋ฐ์ ๋ชปํ๋ค๋ผ๋ ๋ง์ ๋ค์ ๋งํด "๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค."๋ผ๋ ์๋ฏธ์ด๊ธฐ๋ ํ๋ค. ์ ๋ฒ ํฌ์คํ
์์ ์ปดํฌ๋ํธ๋ฅผ ๋ถ์ด๋นต ํ, ๊ฑฐ๊ธฐ์ ๋์จ Elements๋ฅผ ๋ถ์ด๋นต, Props๋ฅผ ๋ถ์ด๋นต ์ ์ฌ๋ฃ๋ก ํํํ๋๋ฐ, ์ด๋ฏธ ๋ง๋ค์ด์ง ๋ถ์ด๋นต ์ ์ฌ๋ฃ๋ฅผ ๋ฐ๊ฟ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ์ด์น์ด๋ค. ๋ง์ฝ ์ฌ์ฉ์ ์
๋ ฅ์ผ๋ก ์๋ก์ด ํ๋ฉด์ ๊ทธ๋ ค์ผ ํ๋ค๋ฉด, ์๋ก์ด Props๋ฅผ ๋ง๋ค์ด ์ปดํฌ๋ํธ์ ๋ฃ๊ณ ์๋ก์ด Elements๋ฅผ Re-Rendering ํ์ฌ ํ๋ฉด์ ๋์์ผ ํ๋ค. ๊ทธ๋ฌ๋๊น, ์๋ก์ด ๋ถ์ด๋นต์ด ๋จน๊ณ ์ถ์ผ๋ฉด ์์ ์ฅ ๋ถ์ด๋นต์ ๋ฒ๋ฆฌ๊ณ ์๋ก ๊ตฌ์๋ฌ๋ผ ํด์ผํ๋ค๋ ๊ฒ์ด๋ค. ์ด ํน์ง์ ..
2024.01.14
ํ๋ก ํธ์๋ ๊ฐ๋ฐ/React - ์ด๋ก
Component์ ๋ํ์ฌ (๋ฆฌ์กํธ)
1. ๊ฐ์ React๋ Component-Based Language์ด๋ค. ๋ฐ๋ผ์ ์ปดํฌ๋ํธ๋ผ๋ ๊ฐ๋
์์ฒด๊ฐ ๋งค์ฐ ์ค์ํ๋ค. ๋ ํจ์์์ ์ธ์์ ์ญํ ์ Component์์๋ Props๋ผ๋ ๋
์์ด ํ๋ค. ๋ฐ๋ผ์ Component๊ฐ ์ค์ํด์ง ๋งํผ Props์ ๋ํ ๊ฐ๋
์ดํด๋ ์ค์ํด์ง๋ค. ๊ฐ์ด ์ดํด๋ณด์. 2. Component์ ๋ํ์ฌ Component๋ ํ๋์ ๊ธฐ๋ฅ์ ํ๋ JavaScript Code๋ฅผ ์๋ฏธํ๋ค. ์ปดํฌ๋ํธ๊ฐ ํจ์์ ํํ๊ฐ ๋งค์ฐ ์ ์ฌํ๋ฐ, ์ด๋ ํ๋์ ๊ธฐ๋ฅ์ด ์๋ฏธ๊ฐ ์์ผ๋ ค๋ฉด ์
๋ ฅ์ ๋ฐ์ ํน์ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅ ํด์ผํ๋๋ฐ, ๊ทธ๋์ ์ปดํฌ๋ํธ์ ํํ๊ฐ ํจ์๋ฅผ ๋ฐ๋ผ๊ฐ๊ฒ ์๋๊ฐ ์ถ๋ค. ๊ธฐ๋ณธ์ ์ธ JavaScript์ ํจ์์ ์ฐจ์ด์ ์ด ์๋ค๋ฉด ๋น์ฐํ ์
๋ ฅ์ ๋ฐ๋ ๊ฐ๊ณผ, ์ถ๋ ฅํ๋ ๊ฐ์ด ๋ค๋ฅด๋ค๋ ๊ฒ์ด๋ค. ํจ์๋ ๋น์ฐ..
2024.01.14
ํ๋ก ํธ์๋ ๊ฐ๋ฐ/React - ์ด๋ก
React ๋๋๋ง ๊ณผ์ ์ ๋ํ ์ค์ต
1. ์ฝ๋ ์์ฑ ๋จผ์ ํ๋ฉด ๊ณ์ธต ๊ตฌ์กฐ chapter_04๋ฅผ ๋ง๋ค๊ณ Clock์ด๋ผ๋ jsx๋ฅผ ๋ง๋ ๋ค. โ Clock.jsx ์์ฑ import React from "react"; const Clock = (props) => { return ( ์๋
๋ฆฌ์กํธ! ํ์ฌ ์๊ฐ: {new Date().toLocaleTimeString()} ) } export default Clock; ํด๋น ํจ์๋ ์๊ฐ์ ์ฐ๋ ํจ์์ด๋ค. โ index.jsx ๋ณ๊ฒฝ import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals..
2024.01.14
ํ๋ก ํธ์๋ ๊ฐ๋ฐ/React - ์ด๋ก
React์ ๋๋๋ง ์๋ฆฌ์ ๊ณผ์
1. React Elements์ ํน์ง์ ๋ํ์ฌ React์ ๋๋๋ง ๊ณผ์ ๊ณผ ์๋ฆฌ์ ๋ํด์ ๋ค๋ฃจ๊ธฐ ์ํด์๋ ๋จผ์ React Elements์ ํน์ง์ ๋ํ์ฌ ์์์ผ ํ๋ค. ์ด์ ํฌ์คํ
์์ ๋ค๋ฃฌ ๋ฐ์ ๊ฐ์ด, React Elements๋ ๋ถ๋ณ์ฑ์ ๊ฐ์ง๋ค. Elements์ ๋ถ๋ณ์ฑ์ด๋, Elements ์์ฑ ํ์๋ Elements ์ children์ด๋ attributes๋ฅผ ๋ฐ๊ฟ ์ ์๋ค! ์ด๋ค. ๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ด ๋์ฌ ์๊ฐ ์๋ค. ์ด? ๊ทธ๋ ๋ค๋ฉด, ์ฌ์ฉ์์ ์
๋ ฅ์ ๋ฐ๋ผ ํ๋ฉด์ ๊ฐฑ์ ํด์ผํ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํด์ผํ๋์? ํ๋ฉด ์ Dom Elements์ ์๋ณธ์ธ React Elements๊ฐ ๋ถ๋ณ์ฑ์ด๋ฉด, ๊ฐฑ์ ์ ๊ตฌํํ ์ ์์ง ์๋์? ์ข์ ์ง๋ฌธ์ด๋ค! ๋ถ๋ช
React Elements๋ ๋ถ๋ณํ์ง๋ง, ์์ ์กฐ๊ฑด์ด ๋ถ์..
2024.01.14
ํ๋ก ํธ์๋ ๊ฐ๋ฐ/React - ์ด๋ก
ReactElement๋ ๋ฌด์์ธ๊ฐ
0. ๊ฐ์ ๋ณธ ํฌ์คํ
์์๋ โ React Element๋ ๋ฌด์์ธ๊ฐ? โ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ DomElement๋ก ๋ณํ๋์ด ๋๋๋ง๋๋์ง ์ ๋ํด์ ์์๋ณด๊ฒ ๋ค. 1. React Element๋? (0) Element์ ๋ํ์ฌ ๋จผ์ Element๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ฒ ๋ค. Element์ ์ฌ์ ์ ์๋ฏธ๋ '๋ฌผ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ์ฑ๋ถ'์ ๋ปํ๋ค. Html์ ๊ณต๋ถํ๋ฉด์ DomElement์ ๋ํด ๋ค์ด ๋ดค์ ๊ฒ์ด๋ค. DOM Element๋ ํ๋ฉด์ ๊ตฌ์ฑํ๋ ํ๋์ ์ฑ๋ถ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด ์ค๋ช
ํ๊ฒ ๋ค. ์์ ํ๋ฉด์ F12 ๊ฐ๋ฐ์ ๋ชจ๋๋ก ๋๋ฌ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. ์ฌ๊ธฐ์ Div ํ๊ทธ ํ๋ํ๋, ํน์ ๊ทธ Div ํ๊ทธ ์ h1, h2 ํ๊ทธ ํ๋ํ๋๊ฐ ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์ฑ๋ถ ์ค ํ๋์์ผ๋ก DOM Element์ ํด๋นํ๋ค. โ ๊ทธ๋ ๋ค๋ฉด Reac..
2024.01.13
ํ๋ก ํธ์๋ ๊ฐ๋ฐ/React - ์ด๋ก