user-img
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ/React - ์ด๋ก  11
thumbnail
[์‹ค์Šต] ๋Œ“๊ธ€ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ (๋ฆฌ์•กํŠธ)
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 - ์ด๋ก 
thumbnail
Component ํ•ฉ์„ฑ๊ณผ ์ถ”์ถœ
1. ๊ฐœ์š” ์ด๋ฒˆ ์žฅ์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•ฉ์น˜๊ณ  ์ž˜๊ฒŒ ์ชผ๊ฐœ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๊ฒ ๋‹ค. ์•„์‹œ๋‹ค์‹œํ”ผ React์˜ ์‹ ๋…์€ '๋ ˆ๊ณ ์ฒ˜๋Ÿผ ์กฐ๋ฆฝ' ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋ ˆ๊ณ ์˜ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. ๊ทธ๋•Œ ๊ทธ๋•Œ ์ž…๋ง›์— ๋งž๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ™์ด๊ณ  ๋–ผ๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ, ์›ํ•˜๋Š” ๋ชจ์–‘์„ ์กฐ๋ฆฝํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ ๋ ˆ๊ณ ๋ฅผ ๋ถ™์ด๊ณ  ๋–ผ๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ์ž. 2. Component ํ•ฉ์„ฑ ์œ„์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ ํฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ž‘์€ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์กฐํ•ฉํ•˜๋Š” ํ–‰์œ„๋ฅผ ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ์ด๋ผ ํ•œ๋‹ค. ์˜ˆ์ œ์—์„œ๋Š” ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ผ์ง€๋งŒ, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•ฉ์ณ๋„ ๋œ๋‹ค. 3. ์ปดํฌ๋„ŒํŠธ ์ถ”์ถœ ์ปดํฌ๋„ŒํŠธ ์ถ”์ถœ์€ ๋„ˆ๋ฌด ํฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ ์ž‘์€ ์ปดํฌ๋„ŒํŠธ๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค. ํฐ ์ปดํฌ๋„ŒํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” props ์ค‘ ์ผ๋ถ€๋ฅผ ๋‹ค์‹œ props๋กœ ๋ฐ›..
2024.01.14
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ/React - ์ด๋ก 
thumbnail
Component์˜ ์ข…๋ฅ˜์™€ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
1. ๊ฐœ์š” ์ด์ œ ์ปดํฌ๋„ŒํŠธ, React Elements, DOM Elements์— ๋Œ€ํ•œ ๊ฐœ๋…์  ์ดํ•ด๋Š” ์ €๋ฒˆ ํฌ์ŠคํŒ…๋“ค์„ ํ†ตํ•ด ์žกํ˜”์„ ๊ฒƒ์ด๋‹ค. ์ด์ œ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง„์งœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜์™€ ๊ทธ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ๋‹ค. 2. ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜ ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜์—๋Š” ํฌ๊ฒŒ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๋‹ค. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ด ๋ณต์žกํ•˜๊ณ  ์–ด๋ ต๋‹ค๋Š” ์˜๊ฒฌ์ด ๋งŽ์•„์„œ ์š”์ฆ˜ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ๋˜์–ด์žˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. ์ด๊ฑฐ ๋ง๊ณ  ์ต๋ช… ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์จ๋„ ๋œ๋‹ค. const Welcome = (props) => { //... } ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž๋ฐ” ๊ฐ™์€ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋ฅผ ์“ธ ๋•Œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ ๊ทธ๋Œ€๋กœ ์ด๋‹ค. ๋‹ค..
2024.01.14
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ/React - ์ด๋ก 
thumbnail
Props์— ๋Œ€ํ•˜์—ฌ (๋ฆฌ์•กํŠธ)
1. ๊ฐœ์š” ์—ฌ๊ธฐ์„œ๋Š” Props์˜ ํŠน์ง•๊ณผ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด๊ฒ ๋‹ค. 2. Props์˜ ํŠน์ง• Props์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํŠน์ง•์€ READ_ONLY ๋ผ๋Š” ํŠน์ง•์ด๋‹ค. ์ฝ๊ธฐ ๋ฐ–์— ๋ชปํ•œ๋‹ค๋ผ๋Š” ๋ง์€ ๋‹ค์‹œ ๋งํ•ด "๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค."๋ผ๋Š” ์˜๋ฏธ์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ•์–ด๋นต ํ‹€, ๊ฑฐ๊ธฐ์„œ ๋‚˜์˜จ Elements๋ฅผ ๋ถ•์–ด๋นต, Props๋ฅผ ๋ถ•์–ด๋นต ์† ์žฌ๋ฃŒ๋กœ ํ‘œํ˜„ํ–ˆ๋Š”๋ฐ, ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๋ถ•์–ด๋นต ์† ์žฌ๋ฃŒ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ด์น˜์ด๋‹ค. ๋งŒ์•ฝ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ์ƒˆ๋กœ์šด ํ™”๋ฉด์„ ๊ทธ๋ ค์•ผ ํ•œ๋‹ค๋ฉด, ์ƒˆ๋กœ์šด Props๋ฅผ ๋งŒ๋“ค์–ด ์ปดํฌ๋„ŒํŠธ์— ๋„ฃ๊ณ  ์ƒˆ๋กœ์šด Elements๋ฅผ Re-Rendering ํ•˜์—ฌ ํ™”๋ฉด์— ๋„์›Œ์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, ์ƒˆ๋กœ์šด ๋ถ•์–ด๋นต์ด ๋จน๊ณ  ์‹ถ์œผ๋ฉด ์†์— ์ฅ” ๋ถ•์–ด๋นต์„ ๋ฒ„๋ฆฌ๊ณ  ์ƒˆ๋กœ ๊ตฌ์›Œ๋‹ฌ๋ผ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด ํŠน์ง•์„ ..
2024.01.14
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ/React - ์ด๋ก 
thumbnail
Component์— ๋Œ€ํ•˜์—ฌ (๋ฆฌ์•กํŠธ)
1. ๊ฐœ์š” React๋Š” Component-Based Language์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ปดํฌ๋„ŒํŠธ๋ผ๋Š” ๊ฐœ๋…์ž์ฒด๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ๋˜ ํ•จ์ˆ˜์—์„œ ์ธ์ˆ˜์˜ ์—ญํ• ์„ Component์—์„œ๋Š” Props๋ผ๋Š” ๋…€์„์ด ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Component๊ฐ€ ์ค‘์š”ํ•ด์ง„ ๋งŒํผ Props์— ๋Œ€ํ•œ ๊ฐœ๋… ์ดํ•ด๋„ ์ค‘์š”ํ•ด์ง„๋‹ค. ๊ฐ™์ด ์‚ดํŽด๋ณด์ž. 2. Component์— ๋Œ€ํ•˜์—ฌ Component๋ž€ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” JavaScript Code๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•จ์ˆ˜์™€ ํ˜•ํƒœ๊ฐ€ ๋งค์šฐ ์œ ์‚ฌํ•œ๋ฐ, ์ด๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์ด ์˜๋ฏธ๊ฐ€ ์žˆ์œผ๋ ค๋ฉด ์ž…๋ ฅ์„ ๋ฐ›์•„ ํŠน์ • ๊ฒฐ๊ณผ๊ฐ’์„ ์ถœ๋ ฅ ํ•ด์•ผํ•˜๋Š”๋ฐ, ๊ทธ๋ž˜์„œ ์ปดํฌ๋„ŒํŠธ์˜ ํ˜•ํƒœ๊ฐ€ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋ผ๊ฐ„๊ฒŒ ์•„๋‹Œ๊ฐ€ ์‹ถ๋‹ค. ๊ธฐ๋ณธ์ ์ธ JavaScript์˜ ํ•จ์ˆ˜์™€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค๋ฉด ๋‹น์—ฐํžˆ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๊ฐ’๊ณผ, ์ถœ๋ ฅํ•˜๋Š” ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•จ์ˆ˜๋Š” ๋‹น์—ฐ..
2024.01.14
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ/React - ์ด๋ก 
thumbnail
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 - ์ด๋ก 
thumbnail
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 - ์ด๋ก