๋ฐฑ์๋ ๊ฐ๋ฐ์๋: ํด๋น api ์
๋ฐ์ดํธํ์ต๋๋ค. ๋ฉ์๋๋ get์ด๊ณ body์ ๋ด์์ ๋ณด๋ด์ฃผ์๋ฉด ๋ฉ๋๋ค~ ๋: ๋ต~~ ๊ฒฐ๊ณผ : ERROR ERROR ์?? ๐ ?? ์ฌ์ง์ด Redux๋ก ์์ฑํ api instance์์๋ body๋ฅผ ๋ด๋๊ฑธ ๊ฑฐ๋ถ ใ
.. ํ๋ผ๋ฏธํฐ๊ฐ url, config ์ด์์ผ๋ก ๋ชป ๋ฐ๋๋ค๊ณ ๋ฑ์ด๋. ์๋์ด๊ฐ๋ฐ์๋: get ์์ฒญํ๋๋ฐ ๋ฐ๋์ ๋ด๋๋ค๊ณ ??๐ ๋: ๋ต- ์ ์ ๊ทธ๋ ๊ฒ ํ๋๋ฐ์?๐ณ? ์ ๋๋์? ์ด์ ์๋ ๊ฒ์ํ์์ ๊ฒ์ํ ๋ get ๋ฉ์๋๋ก ์์ฒญํ๋ฉฐ ๋ฐ๋์ ๋ด์์ ๋ณด๋ธ ๊ธฐ์ต์ด ์๊ธฐ์ - ๋น์ฐํ๊ฒ~~~~ body์ ๋ด๋๊ฑฐ ์คํค๋ํค์! ํ๋ ์ํฉ. ํผ๋๋ง ๊ฐ์ค๋๋ ์ํฉ ๊ทธ๋์ ์ ๋ฆฌํ๋ค. ์ผ๋จ ๊ฒฐ๋ก ๋ง ๋ณด์๋ฉด, pararms ๋ฅผ ์จ์ ์์ฒญํ๋ฉด config์ ๋ด๊ฒจ์ get ์์ฒญ์์๋ ๋ฐ๋์ ..
react
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 ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ๋ง๋ค ์ ์๋ค. ํ์ง๋ง ํ์ด์ง๊ฐ ์ ์ ๋์ด๋๊ณ , ๋์ ์ธ ์ธํฐ๋ํฐ๋ธํ ์น์ ๋ง๋ค๊ธฐ ์ํด์๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ์ํ๋ค. ๊ฒ๋ค๊ฐ ์์ฆ์ ๋จ์ํ ์น์ด ์๋๋ผ, ๋ชจ๋ฐ์ผ์์๋ ์ธ ์ ์๋ ์ ๋์ ์ธ ๊ฑธ ์ข์ํ๋ค๋ณด๋ ์ด๋ด ๋, ๋ฆฌ์กํธ๊ฐ ์ ๋ง ..