react

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋‹˜: ํ•ด๋‹น api ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ๋Š” get์ด๊ณ  body์— ๋‹ด์•„์„œ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค~ ๋‚˜: ๋„ต~~ ๊ฒฐ๊ณผ : ERROR ERROR ์™œ?? ๐Ÿ‘€ ?? ์‹ฌ์ง€์–ด Redux๋กœ ์ž‘์„ฑํ•œ api instance์—์„œ๋„ body๋ฅผ ๋‹ด๋Š”๊ฑธ ๊ฑฐ๋ถ€ ใ…‹ .. ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ url, config ์ด์ƒ์œผ๋กœ ๋ชป ๋ฐ›๋Š”๋‹ค๊ณ  ๋ฑ‰์–ด๋ƒ„. ์‹œ๋‹ˆ์–ด๊ฐœ๋ฐœ์ž๋‹˜: get ์š”์ฒญํ•˜๋Š”๋ฐ ๋ฐ”๋””์— ๋‹ด๋Š”๋‹ค๊ณ ??๐Ÿ‘€ ๋‚˜: ๋„ต- ์ „์— ๊ทธ๋ ‡๊ฒŒ ํ–ˆ๋Š”๋ฐ์š”?๐Ÿ˜ณ? ์•ˆ ๋˜๋‚˜์š”? ์ด์ „์—๋„ ๊ฒŒ์‹œํŒ์—์„œ ๊ฒ€์ƒ‰ํ•  ๋•Œ get ๋ฉ”์†Œ๋“œ๋กœ ์š”์ฒญํ•˜๋ฉฐ ๋ฐ”๋””์— ๋‹ด์•„์„œ ๋ณด๋‚ธ ๊ธฐ์–ต์ด ์žˆ๊ธฐ์— - ๋‹น์—ฐํ•˜๊ฒŒ~~~~ body์— ๋‹ด๋Š”๊ฑฐ ์˜คํ‚ค๋„ํ‚ค์š”! ํ–ˆ๋˜ ์ƒํ™ฉ. ํ˜ผ๋ž€๋งŒ ๊ฐ€์ค‘๋˜๋Š” ์ƒํ™ฉ ๊ทธ๋ž˜์„œ ์ •๋ฆฌํ•œ๋‹ค. ์ผ๋‹จ ๊ฒฐ๋ก ๋งŒ ๋ณด์ž๋ฉด, pararms ๋ฅผ ์จ์„œ ์š”์ฒญํ•˜๋ฉด config์— ๋‹ด๊ฒจ์„œ get ์š”์ฒญ์‹œ์—๋„ ๋ฐ”๋””์— ..
Redux๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ, useNavigate๋กœ ๋ผ์šฐํŒ…ํ•˜๋ฉด์„œ ํ•จ๊ป˜ ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. useNavigate์™€ useLocation์ด๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค! 1. useNavigate() useNavigate๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋™ ๊ฒฝ๋กœ๋กœ state๊ฐ’ ์ „๋‹ฌํ•˜๊ธฐ const navigte() = useNavigate(); navigate("์ด๋™ํ•  ๊ฒฝ๋กœ", state:{ "์ „๋‹ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ" }); 2. useLocation() useLocation์„ ์จ์„œ props ๋ฐ›๊ธฐ const { state } = useLocation();
๋งจ๋‚  ์ •ํ•ด์ ธ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ๋งŒํ•˜๋‹ค๊ฐ€ ๋ชจ์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด UI๋ฅผ ์งœ์•ผํ•˜๋Š” ์ผ์ด ์ƒ๊ฒผ๋‹ค. ๋ฐ‘๋ฐฅ์„ ๊น”์•„๋ณด์ž๋ฉด ใ…‹ใ…‹... ์ฒ˜์Œ๋ถ€ํ„ฐ ๋นŒ๋“œํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„์— ๋ผ์—ฌ๋“  ํ”„๋กœ์ ํŠธ์˜€๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ฝ์„ ๋•Œ๋ถ€ํ„ฐ ๋ฒ„๋ฒ…์ด๊ธด ํ–ˆ๋‹ค. ์ž ์ด์ œ ๋ฐ‘๋ฐฅ์€ ๊น”๋ฆผ. ๋‚ด๊ฐ€ ํ•ด์•ผํ•  ๋ชฉ๋ก 1. swiper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ด๋‹ค. 2. navigator ๋ฒ„ํŠผ์„ ๋‚˜์˜ค๊ฒŒํ•˜๊ณ  ์ฒซ ์Šฌ๋ผ์ด๋“œ์—์„œ๋Š” ์™ผ์ชฝ ๋ฒ„ํŠผ์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋งˆ์ง€๋ง‰ ์Šฌ๋ผ์ด๋“œ๋Š” ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์ด ์‚ฌ๋ผ์ง€๊ฒŒํ•œ๋‹ค. 3. ์Šฌ๋ผ์ด๋“œ๋Š” ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๊ฒŒํ•œ๋‹ค. Code import React, { useState } from 'react'; import { Swiper, SwiperSlide } from 'swiper/react'; const Projects = () => { const [sw..
React-Query ๋น„๋™๊ธฐ ํ†ต์‹  fetch, axios ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋น„๋™๊ธฐ ๋กœ์ง์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ช‡ ๊ฐ€์ง€ ์žˆ์ง€๋งŒ react-query๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค(์บ์‹ฑ, ๊ฐ’ ์—…๋ฐ์ดํŠธ, ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋“ฑ)์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ๋„ ๋งค์šฐ ๊ฐ„๋‹จํ•ด์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๋กœ์ง์„ store์—์„œ ๊ฐœ๋ฐœํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. store๋Š” client์—์„œ state๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‚ด๋ถ€์— client data ์™€ server data ๊ฐ€ ๊ณต์กด์„ ํ•˜๊ฒŒ ๋˜๋Š” ์ˆœ๊ฐ„์ด ์ƒ๊ฒจ๋‚ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ํ˜ผ๋ž€์„ ๋นš์–ด๋‚ด๋Š”๋ฐ react-query๋ฅผ ..
์ด๋ฏธ์ง€ํŒŒ์ผ์„ ๋งŽ์ด ๋‹ค๋ฃจ๋Š” ์—…๋ฌด๋ฅผ ๋ณด๊ณ  ์žˆ๋‹ค. ๊ฐ‘์ž๊ธฐ ์ถ”๊ฐ€๋œ ์–ด๋–ค ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด์„œ ํ”„๋ก ํŠธ์ชฝ์—์„œ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ฐ”๊ฟ”์„œ ์ „๋‹ฌํ•ด์•ผํ•  ์ผ์ด ์ƒ๊ฒผ๋‹ค. ๊ทธ๋ž˜์„œ ์ฐพ์•„์„œ ์“ฐ๊ฒŒ ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ React Image File Resizer ๋„“๋”” ๋„“์€ ๋ฆฌ์•กํŠธ ์ƒํƒœ๊ณ„์—์„œ ์—†๋Š”๊ฒŒ ์—†๋‹ค. ์ด๋ฏธ์ง€์˜ width, height, format ๋“ฑ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํŒจํ‚ค์ง€์ด๋‹ค. ์„ค์น˜ํ•˜๊ธฐ npm i react-image-file-resizer or yarn add react-image-file-resizer ์‚ฌ์šฉํ•˜๊ธฐ //๋ถˆ๋Ÿฌ์˜ค๊ธฐ import Resizer from "react-image-file-resizer"; //์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ•  ๊ฑด์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ฐจ๋ก€ ์ฐจ๋ก€ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. Resizer.imageFileResizer( file, //๋ฐ”..
useRef ๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋ฐ, ์˜ค๋žœ๋งŒ์— ์—…๋ฌด๋ฅผ ๋ณด๋‹ค๊ฐ€ ์‚ฌ์šฉํ•  ์ผ์ด ์ƒ๊ฒผ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณธ๋‹ค!! useRef ์‚ฌ์šฉํ•˜๊ธฐ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ฃผ๋กœ useRef๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํŠน์ • DOM ์š”์†Œ์—๊ฒŒ ์ ‘๊ทผํ•ด์•ผํ•  ๋•Œ์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ์— ์ƒ๊ธด ์Šคํฌ๋กค ๋™์ž‘์„ ์ œ์–ดํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ด๋•Œ useRef๋ฅผ ์จ์„œ ํ•˜๋ฉด ๋œ๋‹ค. ์ด ์™ธ์—๋„ ํฌ์ปค์Šค๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผํ•œ๋‹ค๋˜์ง€, ํฌ๊ธฐ๋ฅผ ํŠน์ •ํ•ด์•ผํ•œ๋‹ค๋˜์ง€ DOM์š”์†Œ์— ๋Œ€ํ•œ ์„ธ์„ธํ•œ ๊ฒƒ๋“ค์ด ํ•„์š”ํ•  ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ €๋Š” ๋ฆฌ์•กํŠธ๋ฅผ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์“ฐ๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— useRef hook์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šคํ˜•์€ ์ฝœ๋ฐฑํ•จ์ˆ˜๋„ ์จ์•ผํ•˜๊ณ . ์‚ด์ง ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. useRef ์„ ์–ธํ•˜๊ธฐ ์„ ์–ธ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. useRef ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ฃผ๊ณ  ๊ทธ ์•ˆ์— ์ดˆ๊ธฐ๊ฐ’์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค...
๐Ÿ“ข Error: App(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null. โœ… ์˜ค๋žœ๋งŒ์— ๋งŒ๋‚œ ์ •๋ง ๊ฐ„๋‹จํ•œ ์—๋Ÿฌ! ์ตœ๊ทผ์— ๋งŒ๋‚œ ์—๋Ÿฌ๋“ค์€ ๊ธฐ๋ณธ 2์‹œ๊ฐ„ ์žก์•˜๋˜๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ, ์ด ์—๋Ÿฌ๋Š” ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฐพ์•„๋ƒˆ๋‹ค. ๊ด„ํ˜ธ๊ฐ€ ์–ด๋”˜๊ฐ€์—์„œ ๋ฏธ์”ฝ๋˜์—ˆ๋˜๊ฒƒ!! ๊ทธ๋ž˜์„œ return ์˜ ์ž๋ฆฌ์— return ์ด ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์•„์„œ ์ƒ๊ธด ์—๋Ÿฌ์ด๋‹ค! ์–ด๋”˜๊ฐ€์—์„œ return ์„ ์ œ๋Œ€๋กœ ํ•ด์ฃผ์ง€ ๋ชป ํ•  ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ์—๋Ÿฌ์ด๋‹ˆ, ์ฐฌ์ฐฌํžˆ ์ฝ”๋“œ๋ฅผ ์‚ดํ”ผ๋‹ค๋ณด๋ฉด ๋ฐ”๋กœ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค!
React๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Axios ํ˜น์€ Fetch์™€ ๊ฐ™์€ HTTP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค Fetch API๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์œ„ํ•ด fetch()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‚ด์žฅ๋˜์–ด์žˆ์–ด์„œ ๋”ฐ๋กœ ์„ค์น˜ํ•  ํ•„์š” ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Axios์˜ ๊ฒฝ์šฐ์—๋Š” npm์ด๋‚˜ yarn์„ ์ด์šฉํ•ด์„œ ์„ค์น˜๋ฅผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค promise ๊ธฐ๋ฐ˜์ด๋ผ์„œ ์ดํ–‰ ํ˜น์€ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” promise๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Axios vs Fetch ๋ฌธ๋ฒ• //Axios axios.get( url, { ์˜ต์…˜ }, {} ) or axios(url, { method: 'get', headers: { "Content-Type: "application/json" }, data: {}, }) //f..
ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋Š” ์™œ ์ค‘์š”ํ•œ๊ฐ€์š”? ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง ํ•  ๋•Œ, ํ˜น์€ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜์ง€ ์•Š์•„๋„ ์ค‘์š”ํ•œ ์กด์žฌ์ž…๋‹ˆ๋‹ค. ๋ฆฌํŒฉํ† ๋ง์„ ํ•  ๋•Œ์—๋Š” ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์งœ๋‘๊ณ  ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋ฉด ํ•˜๊ธฐ ์ „๊ณผ ํ›„์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ธ์—๋„ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋“ค์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋‘๋ฉด ์œ ์ง€๋ณด์ˆ˜ํ•  ๋•Œ ์˜ˆ์ƒ์น˜ ๋ชป ํ•œ ์—๋Ÿฌ๋“ค์„ ๋ฏธ๋ฆฌ ๋ฐฉ์ง€ํ•  ์ˆ˜ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ์„œ์ ์—์„œ๋„ ์ด ์ค‘์š”์„ฑ์„ ๊ต‰์žฅํžˆ ๊ฐ•์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. React Testing Library๋Š” ์„ธ๋ถ€์ ์ธ ๊ตฌํ˜„์‚ฌํ•ญ๋ณด๋‹ค๋Š” ์‹ค์ œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ๊ถŒ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ div ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ณด๋‹ค div ํ…Œ๊ทธ์˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ์ž˜ ๋…ธ์ถœ..
React-Query React app์—์„œ ๋น„๋™๊ธฐ ๋กœ์ง์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ฒŒ ํ•ด์ฃผ๋Š” data fetching ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. "์ „์—ญ ์ƒํ…Œ"๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ ๋„ React ๋ฐ React-Native ์•ฑ์—์„œ ์„œ๋ฒ„์˜ ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์— ๊ฐ€์ ธ์˜ค๊ณ  ์บ์‹œํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„ ์ƒํƒœ์˜ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ์™€ ์žฅ์• ๋ฌผ์„ ๊ทน๋ณตํ•˜๊ณ  ์•ฑ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์•ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋Š” ๋กœ์ง์„ store ๋‚ด๋ถ€์— ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋ฉด store๋Š” ํด๋ผ์ด์–ธํŠธ state๋ฅผ ์œ ์ง€ํ•ด์•ผํ•˜๋Š”๋ฐ, ์–ด๋Š ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์™€ ํด๋ผ์ด์–ธํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณต์กดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.(redux๊ฐ€ ๊ทธ๋Ÿฌํ•จ..) ์ด๋Ÿฐ ๋ถ€๋ถ„์„ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์”๋‹ˆ..
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Today I Learned ๐Ÿ“š โญ ๋Œ“๊ธ€๊ตฌํ˜„์˜ ํ›„ํญํ’ ๋Œ“๊ธ€, ๋Œ€๋Œ“๊ธ€์„ ๋ฆฌ์•กํŠธ ๋”์—์„œ useState๋งŒ์„ ์ด์šฉํ•œ ๊ตฌํ˜„ ํ›„ํญํ’์ด ๋๋‚˜๊ณ  ์ƒ์„ธํŽ˜์ด์ง€์— ๋“ฑ์žฅํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฒ„ํŠผ. ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฒ„ํŠผ ๊ตฌํ˜„์—์„œ ๋˜ ๋‹ค์‹œ ๋งŽ์€ ์‹œ๊ฐ„์„ ์žก์•„ ๋จน์—ˆ๋‹ค. ์ด๋•Œ๊นŒ์ง€๋งŒํ•ด๋„ ๋Œ€๋Œ“๊ธ€์„ ๊ตฌํ˜„ํ•ด๋ƒˆ๋‹ค๋Š” ์ž์‹ ๊ฐ์— ๊ฐ€๋“ ์ฐจ์žˆ์—ˆ๋Š”๋ฐ, useState๋กœ๋Š” ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋‹ค๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋ฉด ๋‚ด์šฉ์ด ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ๋ชจ๋‘ ์‚ฌ๋ผ์ง„๋‹ค๋Š”๊ฑธ ๋ถˆํ˜„๋“ฏ ๊นจ๋‹ซ๊ณ  ๐Ÿ˜ต ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋žœ๋”๋ง๋˜๋Š” ๊ฑธ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด useEffect์™€ redux๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ด ๋•Œ ๋Œ“๊ธ€์ด ๋“ค์–ด๊ฐ€์žˆ๋Š” ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธ ํŽ˜์ด์ง€๋ฅผ ๋‹ค ๋žœ๋”๋งํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋Œ“๊ธ€๋ถ€๋ถ„๋งŒ ๋”ฐ๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•ด์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋žœ๋”๋งํ•ด์ค˜์•ผํ•œ๋‹ค๋Š”๊ฑฐ! ๋Œ“๊ธ€์ด๋ผ๋Š” ๊ฑธ ์ฒ˜์Œ ๊ตฌํ˜„ํ•ด๋ณด๋Š”๊ฑฐ๋ผ์„œ ๋งˆ์Œ์ด ๋ณต์žกํ–ˆ๋‹ค. ใ…Ž ….. ๋Œ“๊ธ€๋ถ€๋ถ„๋งŒ red..
JavaScript๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์–ด๋Š ์ •๋„ ์ดํ•ดํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์ž ์ด๊ฒƒ์ €๊ฒƒ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ๋งŒ๋“ค์–ด๋ณด๊ณ , ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋ฆฌ์•กํŠธ์—๋„ ์†์„ ๋Œ”๋‹ค. React(๋ฆฌ์•กํŠธ)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ์„œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ํŽ˜์ด์Šค๋ถ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŒ๋“ ๊ฑด๋ฐ, ์ž‘๋…„๊นŒ์ง€๋งŒ ํ•ด๋„ ๊ต‰์žฅํžˆ ํ•ซํ–ˆ๋Š”๋ฐ, ์š”์„ธ๋Š” ๋˜ ๋‹ค๋ฅธ๊ฒŒ ํ•ซํ•˜๋”๋ผ. ํ•˜์ง€๋งŒ ์–ด์ฉ” ์ˆ˜ ์—†๋‹ค ์ผ๋‹จ. ๋‚˜๋Š” ๋ฆฌ์•กํŠธ ๋ฐฐ๋ฅผ ํƒ”๋‹ค. ์‚ฌ์‹ค ๊ทธ๋ƒฅ ์›นํŽ˜์ด์ง€๋Š” HTML, CSS ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํŽ˜์ด์ง€๊ฐ€ ์ ์  ๋Š˜์–ด๋‚˜๊ณ , ๋™์ ์ธ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ์›น์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์š”์ฆ˜์€ ๋‹จ์ˆœํ•œ ์›น์ด ์•„๋‹ˆ๋ผ, ๋ชจ๋ฐ”์ผ์—์„œ๋„ ์“ธ ์ˆ˜ ์žˆ๋Š” ์œ ๋™์ ์ธ ๊ฑธ ์ข‹์•„ํ•˜๋‹ค๋ณด๋‹ˆ ์ด๋Ÿด ๋•Œ, ๋ฆฌ์•กํŠธ๊ฐ€ ์ •๋ง ..
๋ฐ(Ming) ๐Ÿฐ
'react' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก