1์ฐจ ํ๋ก์ ํธ์ ์๋ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์ฎ๊ฒจ์ค๋ฉด ๋ ๊ฑฐ๋ผ ์๊ฐ์ ํ๋๋ฐ, ์์๋ณด๋ค ๊ฝค ์ค๋ ์๊ฐ ์ฝ์ง์ ํ๋ค. ๋ด๊ฐ ๋ชป์ฐพ๋๊ฑด์ง ํ์
์ ๋ํ ์ ๋ณด๊ฐ ๋ณ๋ก ์์์. ์ผ๋จ ๋ฌธ์๋ฅผ ๋ณด๊ณ ์ด๋ฌ์ฟต ์ ๋ฌ์ฟต ํ๋ ๋๊ธด ํ๋๋ฐ, ์ด๊ฒ ์ ํํ ๋ฐฉ๋ฒ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ์ผ๋จ ์ ๋์๊ฐ๋ ๊ธฐ๋ก. ์ ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํจํค์ง ๋งค๋์ ์์ socket.io-client ๋ฅผ ์ค์นํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ํ์
์ ์๋ฅผ ํด์ฃผ๋ ค๊ณ ํ๋๋ฐ, ์์ฐ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค๋๊ฑด ์๊ฒ ๋ค.. ์ผ๋จ!! import io, { Socket } from 'socket.io-client'; io์ ํจ๊ป Socket๋ import ํด์ค๋ค. const [socket, setSocket] = useState(); ์์ผ ๊ฐ์ฒด๋ฅผ ์์ฑํด state์ ์ ์ฅํ๋ ๋ฐฉ์์ด์๋ค. ์๋ Socket ํ์
..
์์ํก ํ์ด์ง๋ฅผ ์ํด ๋ฌดํ์คํฌ๋กค์ ๊ตฌํํ๋ ๊ธฐ๋ก์ด๋ค. ๊ทผ๋ฐ ์ด์ ๋ฆฌ์กํธ์ฟผ๋ฆฌ์ useInfiniteQuery๋ฅผ ๊ณ๋ค์ธ. ์ฒ์์ ๋จ์ํ๊ฒ state๋ฅผ ์ด์ฉํด์ ๋ฌดํ์คํฌ๋กค์ ๋ง๋๋ ๋ก์ง์ ์๊ฐํ๊ณ ์ ๊ทผํ๋ค๊ฐ ์ฝ์ง์ ์ข ํ๋ค. setList(prev => [...prev, ...res.data.list]); ์ ๋ฐ์ดํฐ๋ฅผ ํจ์นญ์ ํ๊ฒ ๋๋ฉด, ๊ธฐ์กด์ ์๋ ๋ฐฐ์ด ์ํ์ ์๋ก ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ค. ์คํ๋ ๋ ์ฐ์ฐ์ ๋๋ concat์ ์ฌ์ฉํ ์ ์๋ค. ๊ทผ๋ฐ useInfiniteQuery๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ง์ฟต ๋ค๋ฆ. 1. useInfiniteQuery const { data, fetchNextPage } = useInfiniteQuery( ['talks'], UsersApi.getTalks, { getNextPagePa..
ํ๋ก์ ํธ์ ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ฅผ ๋์
ํ๋ฉด์ ์ด๊ฒ์ ๊ฒ ํด๋ณด๊ณ ์ถ์๊ฒ ๋ง์๋ค. ์๋๋ ๋ฆฌ์กํธ ์ฟผ๋ฆฌ์ ์ฅ์ ์ด๋ผ๊ณ ํ๋ฉด ์์ฃผ ๋์ค๋ ๊ฒ๋ค์ด๋ค. ํจ์นํด์จ ๋ฐ์ดํฐ๋ค์ ์บ์ฑ staleํ ๋ฐ์ดํฐ์ธ์ง ์๋์ง๋ฅผ ๊ตฌ๋ถํด์ ํญ์ ์ ์ ํ ๋ฐ์ดํฐ๋ก ์ ์ง ์๋ฒ ์ํ์ ํด๋ผ์ด์ธํธ ์ํ์ ๋ถ๋ฆฌ success์ error ๋ฑ์ ํจ์นญ ์ํ๋ฅผ ๊ด๋ฆฌ ํนํ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์ด์ ๊ณ ๋ฏผ์ ๋ ํด๋ณด๊ณ ์ถ์๋ค. axios๋ก ๋งค๋ฒ ํจ์นญํด์ฌ๋ ํธ๋ผ์ด ์บ์น๋ก ๊ฐ์ธ์ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค. ๊ทธ๋ด ๋๋ง๋ค ๋น์ทํ ๋ก์ง(๋ณดํต์ ๊ทธ๋ฅ ์ฝ์๋ก๊ทธ..)์ ์ฌ๊ธฐ์ ๊ธฐ ์์ฑํ๊ฑฐ๋, ์ฌ๋ฌ ํ์ด์ง์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋์ด์ผ ํ๋ ๋ก์ง๋ ์ค๋ณต์ผ๋ก ์ฐ์ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ์ ๋ถํฐ ๊ณ ๋ฏผ์ ๋ช๋ฒ ํ์๋ ๋ถ๋ถ์ด์๋๋ฐ ๋ง์นจ ์ฐธ๊ณ ํ ๋งํ ์ข์ ๋ ํผ๋ฐ์ค๋ค์ด ์์ด์ ํ๋ก์ ํธ์ ๋ฃ์ด๋ณด..
์ฑ์ ๋ค์ํ ํ์ด์ง์์ ๋ชจ๋ฌ์ ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋ฆฌ ์ง์ ๋์ง ์์ ์ค๋ฅ์ ๋ํด์๋ ์บ์นํด์ ๋ชจ๋ฌ์ ๋์ฐ๋๋ก ๋์ด์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ฌ์ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํด์ ์ฌ์ฉํด๋ณด๊ธฐ๋ก. ๋ฑ
ํค์ฆ์ ๋น์ทํ๊ฒ ์ฌ์ฉํ์ง๋ง ์กฐ๊ธ์ ๋ค๋ฅธ ๋ฐฉ์์ด๋ค. ์ฐธ๊ณ 6๊ฐ์ ์ , 1์ฐจ ํ๋ก์ ํธ ์ค์ ์งฐ๋ ์ฝ๋์ด๋ค. import React from 'react'; const ModalComponent = ({ children }, ref) => { return ( { ref.current.classList.add('hidden'); }} > {children} ); }; export default React.forwardRef(ModalComponent); ์ด๋ ๊ฒ ๋ชจ๋ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋๊ณ , function TicketCodePage({ ....
๋๋ฉํ์ด์ง์ ๋ก๊ทธ์ธํ์ด์ง๋ ํ ํฐ ์์ด๋ ์ ๊ทผํ ์ ์์ด์ผ ํ๊ณ , ๋ง์ดํ์ด์ง์ ํฐ์ผํ
ํ์ด์ง๋ ์ธ์ฆ์ด ๋์ด ์๋ ์ํ์์๋ง ์ ๊ทผํ ์ ์์ด์ผ ํ๋ค. ํฐ์ผ QR์ฝ๋ ํ์ด์ง๋ ์ธ์ฆ์ด ๋์ด ์์ง ์์๋ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค. ํ๋ช
์ด ํฐ์ผ์ ์ฌ๋ฌ์ฅ์ ์ฌ์ '๊ณต์ ํ๊ธฐ'๋ฅผ ํตํด ์น๊ตฌ๋ค์๊ฒ ์ค ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์. ๋ผ์ฐํ
๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋ผ์ฐํ
return ( ); ๋ฌธ์์์ React-Route-dom ๋ง์ ์ด์ฉํด์ ์ ๊ทผ์ ์ ํํ๋ ๋ฐฉ์์ ๋ํ ์์๊ฐ ์ ๋์ด ์์ด์ ์ฐธ๊ณ ํ๋ค. 1์ฐจ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ HOC๋ก ๋ง๋ค์ด ์ปดํฌ๋ํธ๋ฅผ ์ธ์๋ฅผ ๋๊ธฐ๊ณ ๊ฑธ๋ฌ์ ๋ฆฌํดํ๋ ๋ฐฉ์์ ๋นํด ํจ์ ๊น๋ํ๊ณ ์ง๊ด์ ์ด์ด์ ์ข๋ค. RequireAuth.tsx const RequireAuth = () => { const { ..
์ ๋ฒ 3์ ๊ณต์ฐ๋ ์ฌ์ฉํ ํฐ์ผ ์๋งค ์๋น์ค๋ ๊ฝค ์ฑ๊ณต์ ์ด์๋ค. ๊ณต์ฐ ์๋งค๋ ๋ฌผ๋ก ์ ๊ธฐ์ ์ ๋ฐ์๋ ๊ฝค ๋ง์ ์ ์
์๋ค์ด ์ง์์ ํ๊ณ , ์น์๋น์ค๊ฐ ํฐ ์ํฅ์ ๋ผ์ณค๋ค๊ณ ์๊ฐํ๋ค. 103๋ช
์์ฝ ( ์ฝ๋ก๋ 19 ๋ก ์ธํ ์ต๋ ์
์ฅ ๊ฐ๋ฅ ์ธ์ ) ์ ์
์ 54๋ช
๋ฉด์ ์ง์ ( ์๋ชจ์ ๊ธฐ๋ฅ์ ํตํ ์ ๊ทผ์ฑ , ์นํ์ด์ง๋ฅผ ํตํ ํ๋ณด ) ๊ด๋ฆฌ์ ์นํ์ด์ง ์ ๊ณต์ ํตํ ์
๊ธ ํ์ธ, ์๋ชจ์ ๊ฒ์ ๊ธฐ๋ฅ ์ง์ QR ์ฝ๋๋ฅผ ํตํ ๋น ๋ฅธ ์
์ฅ ํ์ธ , ์
๊ธ ์ ์ฐ storybook ์ ํ์ฉํ npm ๋ชจ๋์ ์, ๋์์ธ์์คํ
๊ตฌ์ถ ์ด๋ฒ 9์ ๊ณต์ฐ์๋ ๊ณต์ฐ์ ํ๊ณ ์ถ์ดํ๋ ์ ํ๋ฐฐ๋ค์ด ๋ง์์ ๋ฌด๋ ค 12ํ์ด๋ ๋์๋ค. ์ด์ฉ ์ ์์ด ๊ณต์ฐ์ ์ดํ๋ก ๋๋์ด ๊ฐ๊ฐ ํ ์ฒซ ๋ชฉ์์ผ๊ณผ ๊ธ์์ผ์ ์งํํ๋ค. ์ฌํ์ ๊ฑฐ๋ฆฌ๋๊ธฐ๋ ์ํ๋์ด ๊ณต์ฐ์ฅ ์ต๋ ์
์ฅ ๊ฐ๋ฅ ์ธ์..
๋์์ด๋๊ฐ ํ๋ก์ ํธ์ ํจ๊ป ํ๋ค๋๊ฑด ์ถ๋ณต์ด๋ค. ๋์์ธ์ด๋ ๊ธฐํ์ ์๊ฐ์ ์์ง ์๊ณ ๊ฐ๋ฐ์๋ง ์ง์คํ ์ ์๋ค๋ ๊ฒ ์ธ์๋ ์ป์ด๊ฐ๋ ๊ฒ์ด ๊ฝค ์๋ค. ๋์์ธ ํ์์ ๋๊ฒจ ๋ฐ์ ํผ๊ทธ๋ง ํ๋ฉด์ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฏ์ด๋ณด๋ฉด์ ๋ง์ด ๋ฐฐ์ ๋ค. ๋์์ด๋๋ค์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์์
ํ๋์ง, ํผ๊ทธ๋ง์ ์ด ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ํ์ฉํ๋์ง, ํ์
์ ์ด๋ป๊ฒ ํ๋์ง. ์ด์ ํ๋ก์ ํธ์์ ๋์์ธ์ ๋งก์์ ํ ๋ ์์
์ ํจ์จ์ ์ผ๋ก ํ๋ ๋ฐฉ๋ฒ์ ์ ํ ๋ชฐ๋๋ค. ์ ๋ชฉ๊ณผ ์๋ธ ํ
์คํธ์ ๊ฐ๊ฒฉ์ ํญ์ 24ํฝ์
๋ก ํด์ผ์ง, ์ด ์ปดํฌ๋ํธ๋ ํญ์ ํ๋ฉด ๋๋น์ ์ฑ์์ง๋๋ก ํด์ผ์ง, ํ๋ ๋๋ฆ์ ๊ธฐ์ค๋ค์ ๋ ํผ์์๋ง ์๊ฐํ๊ณ ์์ผ๋๊น ๊ฐ์ด ๊ฐ๋ฐํ๋ ํ์๋ค๊ณผ ์ํต์ด ์๋ผ์ ์ผ์ ๋๋ฒ์ฉ ํ๋ ๊ฒฝ์ฐ๋ ์ฌ๋ฌ๋ฒ ์๊ฒผ๋ค. ๊ฐ ํ์ด์ง์์ ํต์ผํด์ผ ํ๋ ๋์์ธ๋ค๋ ์ฌ๋ฌ๋ช
์ด์ ์์
์ ํ๋ค๋ณด๋ ์ ๊ฒฝ..
๋ค๋ฅธ ํ์ ๋นํด ๋ณผ๋ฅจ์ ๋ฐฐ๋ก ํฐ ์ํฉ์ด์์ง๋ง ์ ์ผ ์ฒ์ฒํ ์ง๋๋ฅผ ๋๊ฐ๋ค. ํ ์ ์๋ ๊ณ ๋ฏผ์ ๋ค ํ๊ณ ์์ํ์ง๋ง, ๊ทธ๋๋ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ์ด๊ธ๋๋๊ฒ ์๊ธด๋ค. ์ด๋ฒ ๊ธ์ ๋ฑ
ํค์ฆ ํ๋ก์ ํธ์ ์ด๊ธฐ ์ธํ
์ ๋ํ ๊ธฐ๋ก. ํ ํ๋ก์ ํธ ์ง์ ์ ๋ง์ง๋ง์ผ๋ก ํ๋ ํ ํ๋ ์คํฐ๋์์ ์ฌ์ฉํ๋ ์ฝ๋์, ์ด์ ์ ๊ณ ํฐ์ผ ํ์ ์์ ์ฌ์ฉํ๋ ์คํ๋ค์ด ๋ง์ ๋์์ด ๋์๋ค. ์ฌ๊ธฐ์ ์ธํ
ํ๋ฉด์ ๋ฐฐ์ด ๊ฒ๋ค์ ์ด์ ๋ง ์์ํ ๋๋ฒ์งธ ๊ณ ํฐ์ผ ํ๋ก์ ํธ์์ ๋ ์๊ธดํ ์ฌ์ฉํ ์์ . ๋ค์์ ์ด ๊ธ์์ ์ธ๊ธํ ๋ด์ฉ๋ค์ด๋ค. ๋ฆฌ๋์ค ํดํท ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ๊นํ๋ธ ์ก์
๊ณผ ๋์ปค๋ฅผ ์ด์ฉํ ์๋ ๋ฐฐํฌ ์ธํ
1. ๋ฆฌ๋์ค ํดํท ์ํ๊ด๋ฆฌ๋ฅผ ์ํด ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ง์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ๋ง์๋ค. ๋ฆฌ๋์ค ๋ตํฌ, ๋ฆฌ์ฝ์ผ ๋ฑ๋ฑ ๊ณ ๋ คํ์ง๋ง RTK๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ . ์ฌ์ค ๋ช..