๐ก slice() ๋ฐฐ์ด ๋ฉ์๋ slice() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค๊ฑฐ๋ ๋ฐฐ์ด์ ์ผ๋ถ๋ฅผ ๋ฐํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ค. slice() ๋ฉ์๋๋ ์๋ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋์ ์์ ๋ณต์ฌ๋ณธ์ ์์ฑํ๋ค๋ ์ ์ ์ ์ํด์ผ ํ๋ค. ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ๋ค. slice(optional start parameter, optional end parameter) ์ด ์์์์๋ ๊ณผ์ผ ๋ชฉ๋ก์ ๋ง๋ค์๋ค. const fruits = ['apple', 'banana', 'mango', 'melon']; slice() ๋ฉ์๋๋ฅผ ๋งค๊ฐ๋ณ์ ์์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ โ slice() ๋ฉ์๋๋ฅผ ํ์ฉํด ํด๋น ๋ฐฐ์ด์ ์์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค ์ ์๋ค. console.log(fruits.slice()); // ['apple', 'banana', 'm..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ต๊ทผ React Native + TypeScript ๋ก ๊ฐ๋จํ ์ดํ์ ๋ง๋ค๋ฉด์ ๊ณต๋ถํ๋ ๋์ค์ ํ๊ฒฝ ๋ณ์ (env)๋ฅผ ์ ์ฉ์ด ํ์ํ๋๋ฐ, ๊ทธ๋ฅ React์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์กฐ๊ธ ๋ค๋ฅธ ๊ฒ ๊ฐ์์ ์์ํ์ต๋๋ค. 1. react-native-dotenv react-native-dotenv๋ React Native ํ๊ฒฝ์์ ํ๊ฒฝ๋ณ์(env)๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ํฐ๋ฏธ๋์ ์ผ๊ณ ํด๋น ๋ช ๋ น์ด๋ฅผ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํฉ๋๋ค. npm i react-native-dotenv ๋๋ yarn add react-native-dotenv ๊ทธ๋ฆฌ๊ณ ํ์ ์คํฌ๋ฆฝํธ ํ๊ฒฝ์์๋ ์ถ๊ฐ๋ก types๋ฅผ ์ค์นํด ์ค์ผ ํ์ ์คํฌ๋ฆฝํธ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. npm install -D @types/react-native-dote..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ต๊ทผ 'ํด๋ฆฐ ์ฝ๋'์ฑ ๊ณผ ์ฌ๋ฌ ๊ฐ๋ฐ ๊ด๋ จ ์์์ด๋ ๋ฌธ์๋ฅผ ๋ณด๊ณ ํ ์คํธ ์ฝ๋์ ์ค์์ฑ์ ๊นจ๋ซ๊ฒ ๋์๋ค. ์์ผ๋ก ๊ฐ๋ฐ์ ํ๋ฉด์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์ ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ๊ณ ํ ์คํธ ์ฝ๋๋ฅผ ํต๊ณผํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ์์ฑํ๋ TDD ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก React์์ Jest์ React testing library๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฒ์ ๊ณต๋ถํ๊ฒ ๋์๋ค. ๊ณต๋ถํ ๋ด์ฉ์ ๋ณต์ตํ๊ณ ์ ๋ฆฌํ๊ธฐ ์ํด ๊ธ์ ์์ฑํด ๋ณธ๋ค. ํด๋น ๊ธ์์๋ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ซ์๊ฐ ์ฆ๊ฐ๋๋ ๊ฐ๋จํ ์ฑ์ TDD ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก ํ ์คํธํ๊ณ ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค. Jest์ React testing library Jest ? Jest๋ ๊ฐ๋ฐ์๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ์คํฌ๋ฆฝํธ ์ฝ๋์ ๋ํ ํ ์คํธ๋ฅผ ์คํํ ์ ์๋๋ก ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ ์คํธ..
๐ ๋ค์ด๊ฐ๋ฉฐ React + Typescript ํ๊ฒฝ์์ React Testing library์ jest๋ฅผ ์ด์ฉํด์ ํ ์คํธ ์ฝ๋ ์์ฑ์ ๋ํด์ ๊ณต๋ถํ๋ ค๋ ๋์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ์ํด ํด์ผ ํ ๊ฒ์ ๋ณ ๊ฑฐ ์๋์์ง๋ง ํ๋ค๊ฒ(?) ํด๊ฒฐ ๋ฐฉ์์ ์ฐพ์์ ๊ธฐ๋ก์ ํด๋๋ ค๊ณ ํ๋ค. 1. ๋ฌธ์ ๋ฐ์ CRA typescript๋ก ํจํค์ง๋ค์ ์ค์นํ๊ณ ๋ ํ์ npm test ๋ช ๋ น์ด๋ฅผ ํตํด์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋์ด ์๋ ํ ์คํธ ์ฝ๋๋ค์ด ์ ์คํ์ด ๋๋์ง ํ์ธ์ ํด๋ดค๋ค. ํ์ง๋ง ReactDOM.render is no longer supported in React 18 ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ํ ์คํธ ์ฝ๋ ์์ฒด๋ PASS๊ฐ ๋๋ฉด์ ์ ์คํ์ด ๋์์ง๋ง ์์ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋งค์ฐ ์ ๊ฒฝ ์ฐ์๋ค. 2. ๋ฐ์ ์์ธ Rea..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ด ํฌ์คํ ์ Next.js 11 ๋ฒ์ (page router) ํ๊ฒฝ์์ ์์ฑ๋ ๊ธ์ ๋๋ค. 13๋ฒ์ ์ดํ app router ํ๊ฒฝ์์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ด ํฌ์คํ ์์ 1 ~ 1-3๊น์ง๋ง ๋ณด์๊ณ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์. Next.js + Typescript ํ๊ฒฝ์์ ํ ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์ค ์นด์นด์คํก์ผ๋ก ๊ณต์ ํ๊ธฐ ๊ธฐ๋ฅ์ด ํ์ํด์ ๊ตฌํ์ ํ์๋๋ฐ, ๋ช๋ช ์ค๋ฅ๋ ๋ง์ฃผ์น๊ณ ๋ฐ๋ก ์ ๋ฆฌ๋ฅผ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ด๋ ๊ฒ ์ ๋ฆฌํ๊ฒ ๋ฉ๋๋ค. 1. ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๋กํ๊ธฐ ์ผ๋จ ์ฒซ ๋ฒ์งธ๋ก ๊ฐ๋ฐํ๊ธฐ์ ์์์ Kakao Developers์์ ์ดํ๋ฆฌ์ผ์ด์ ๋ฑ๋ก์ ํด์ค์ผ ํฉ๋๋ค. 1-1 ๋ก๊ทธ์ธ ์ฌ์ดํธ์ ์ ์ ํด์ฃผ์๊ณ ์ฒซ ํ๋ฉด์์ ๋ก๊ทธ์ธ์ ํด์ฃผ์๊ณ '๋ด ์ ํ๋ฆฌ์ผ์ด์ '์ ํด๋ฆญํด์ฃผ์ธ์. 1-2 ์ ํ๋ฆฌ์ผ์ด์ ์ถ๊ฐํ๊ธฐ ๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ์ ..
๐ ๋ค์ด๊ฐ๋ฉฐ ๋ฆฌ์กํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ก ์น์ฌ์ดํธ ๊ฐ๋ฐ ์ ๋ง์ด ์ฌ์ฉ๋๋ ์ธ์ด์ ๋๋ค. ํนํ ์ต๊ทผ๋ค์ด ๋ง์ ์ฌ๋๋ค์ด ๊ด์ฌ์ ๊ฐ์ง๊ณ ์๊ณ , ์ค์ ๋ก ํ์ฌ์์๋ ์ ๊ทน์ ์ผ๋ก ํ์ฉ๋๊ณ ์๋ ์ถ์ธ์ฃ . ์ด๋ฒ ํฌ์คํ ์์๋ ๋ฆฌ์กํธ๊ฐ ์ด๋ค ํน์ง์ ๊ฐ์ง๊ณ ์๋์ง ์์๋ณด๊ณ ์ ํฉ๋๋ค. ๋ฆฌ์กํธ(React.js)๋ ๋ฌด์์ผ๊น โ React.js๋ ํนํ SPA(Single Page Application)์ ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์คํ ์์ค JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. React๋ Facebook์์ ์ผํ๋ ์ํํธ์จ์ด ์์ง๋์ด jordan walke๊ฐ ์ฒ์ ๋ง๋ค์์ต๋๋ค. ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ฑ์ view layer๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๊ธฐ๋ฒ์ ํตํด์ ์ฌ๋ฌ๊ฐ์ง ์ ๋ณด๋ฅผ ํ ๊ณณ์ ๋ชจ์..
๐ ๋ค์ด๊ฐ๋ฉฐ React๋ฅผ ์ฒ์ ํ์ตํ๋ ์์ , Redux๊ฐ ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ ํ์ํ์ง์ ๋ํ ๋ช ํํ ์ดํด ์์ด 'Redux๋ฅผ ์ ๋ฐฐ์์ผ ํ๋์ง'์ ๋ํด ์๋ฌธ์ ๊ฐ๊ณค ํ์ต๋๋ค. ํ์ง๋ง, React๋ฅผ ์ด์ฉํ์ฌ ํด๋ก ์ฝ๋ฉ์ ํ๊ฑฐ๋ ์ค์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ด ์์ ์ปดํฌ๋ํธ์๊ฒ ๋ถํ์ํ๊ฒ ๋ง์ Props๋ฅผ ์ ๋ฌํด์ผ ํ๋ ์ํฉ(Props Driling)์ ๊ฒช๊ฒ ๋์์ต๋๋ค. ์ด๋ฐ ๊ฒฝํ์ ํตํด "์ ์ญ ์ํ ๊ด๋ฆฌ"์ ํ์์ฑ์ ์ฒด๊ฐํ๊ฒ ๋์์ต๋๋ค. ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์๋ Redux์ ๋ํด ์์๋ณด๋ ค ํฉ๋๋ค. Redux๋ โ Redux๋ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. Redux๋ React์ ํจ๊ป ์ฌ์ฉ๋..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ด๋ฒ์ ํ ํ๋ก์ ํธ๋ก ํ ํ๋ก์ ํธ๋ฅผ ๊ตฌํ๋ ์น์ฑ์ ํด๋ก ์ฝ๋ฉํ๊ฒ ๋๋ฉด์ ํ๋ก์ ํธ ์งํ ๊ธฐ๊ฐ์ ์ ํํ ์ ์๊ฒ ํ๋ Input์ด ํ์ํ์ต๋๋ค. ๊ทธ๋์ ์บ๋ฆฐ๋๊ฐ ํ์๋๊ณ ์บ๋ฆฐ๋์์ ๋ ์ง๋ฅผ ์ ํํ๋ฉด Input์ ํด๋น ๋ ์ง๊ฐ ์ ๋ ฅ๋ ์ ์๊ฒ ๊ตฌํํ๊ณ ์ถ์์ต๋๋ค. ์บ๋ฆฐ๋๋ฅผ ์ผ์ผ์ด ๊ตฌํํ๊ธฐ์๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฑฐ ๊ฐ์์, ๋ฆฌ์กํธ ์บ๋ฆฐ๋ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์๋ณด๋ ์ค์ react-datepicker๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ง๊ธ๊ป ๊ณต๋ถํ๋ฉด์ ์บ๋ฆฐ๋ ๊ด๋ จํด์๋ ์ฒ์์ด๊ธฐ ๋๋ฌธ์ ์๊ฒ ๋ ๋ด์ฉ์ ์ ๋ฆฌํ๋ ค ํฉ๋๋ค. react-datepicker react-datepicker๋ ๋ฆฌ์กํธ์์ ๋ฌ๋ ฅ์ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ฌ์ฌ์ฉ์ด ์ฝ๊ฒ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ ์๊ฒ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค! npm ์ฌ์ดํธ์ ์ฃผ๊ฐ ๋ค์ด๋ก๋ ํ์๋ฅผ ..
๐ ๋ค์ด๊ฐ๋ฉฐ ๋ฆฌ์กํธ๋ก ํ์ฝ ํ์์ ํด๋ก ์ฝ๋ฉํ๋ ํฌํธํด๋ฆฌ์ค๋ฅผ ์ ์ํ๋ฉด์ ๊ณต๋ถ ์ค์, Link (react-router-dom)์ ํด๋ฆญํ๋ฉด url์ ๋ณ๊ฒฝ์ด ๋์ง๋ง ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋์ง ์์์ ์ ๋๋ก ๊ธฐ๋ฅ์ด ์๋ํ์ง ์๋ ๋ฌธ์ ๋ฅผ ๊ฒช์๋ค. ํด๊ฒฐํ๊ณ ๋๋๊น ์ ๋ง ๋ณ ๊ฒ ์๋์์ง๋ง...(๊ฐ๋ ๋ถ์กฑ) ๋ฌด์์ด ๋ฌธ์ ์ด๊ณ , ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๋ค์ ๋ณต์ตํ๊ธฐ ์ํด ์ ๋ฆฌํด๋ณธ๋ค. โ ๋ฌธ์ ๋ฌธ์ ์ ํ๋ฉด์ด๋ค. Detail ์ปดํฌ๋ํธ์์ ํด๋น ์ํ์ ๊ด๋ จ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ๋ณด์ฌ์ฃผ๋ ์ปดํฌ๋ํธ๋ค. Detail ์ปดํฌ๋ํธ์์ ๊ด๋ จ ์ํ๋ฅผ ๋ณด์ฌ์ค ๋ค, ๊ด๋ จ ์ํ๋ฅผ ํด๋ฆญํ๋ฉด ๊ทธ ๊ด๋ จ ์ํ์ Detail ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋๊ฒ ๊ตฌํํ๊ณ ์ถ์๋ค. ํ์ง๋ง ์ฌ์ง์ ๋ณด์ด๋ ๋ฐ์ ๊ฐ์ด ํด๋ฆญ์ ํ๋ฉด url์ ์ ๋ณ๊ฒฝ์ด ๋์ง๋ง ํด๋น ์ํ์ Deta..