Study_Develop/React(7)
-
JSX๋?
JSX ๋? - JSX(JavaScript XML)๋ js ์ xml์ ์ถ๊ฐํ ํ์ฅ ๋ฌธ๋ฒ์ด๋ค. - JSX๋ ๋ฆฌ์กํธ๋ก ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ๋๋ฏ๋ก ๊ณต์์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์๋๋ค. - ๋ธ๋ผ์ฐ์ ์์ ์คํํ๊ธฐ ์ ์ ๋ฐ๋ฒจ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ jsํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค. // ์ค์ ์์ฑํ JSX ์์ function App() { return ( Hello, GodDaeHee! ); } // ์์ ๊ฐ์ด ์์ฑํ๋ฉด, ๋ฐ๋ฒจ์ด ๋ค์๊ณผ ๊ฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํด์ํ์ฌ ์ค๋ค. function App() { return React.createElement("h1", null, "Hello, GodDaeHee!"); } - JSX๋ ํ๋์ ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ์ HTML์ ๋์์ ์์ฑํ์ฌ ํธ๋ฆฌํ๋ค. JSX ๋ฌธ๋ฒ 1. ๋ฐ๋์ ๋ถ๋ชจ..
2023.08.14 -
Emotion ์ผ๋ก React ์ปดํฌ๋ํธ ์คํ์ผ๋ง
ํจํค์ง ์ค์น npm i @emotion/react Emotion์ ๋ฐ๋์ React ํ๋ก์ ํธ์์๋ง ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ ์๋๋ค. ์ผ๋ฐ jsํ๋ก์ ํธ์์๋ @emotion/cssํจํค์ง๋ฅผ ์ค์นํ๋ฉด ๋๋ค. ๊ธฐ๋ณธ ๋ฌธ๋ฒ Styled Components์ ๊ฝ์ด styled()ํจ์์๋ค๋ฉด, Emotion์ ๊ฝ์ css()ํจ์์ด๋ค. ์ค๋ ๊ธฐ๊ฐ ๋์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ก ๊ฒฝ์ํ๋ฉด์ ํ์ฌ๋ Styled Components๋ css()ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , Emotion๋ ๋ค์ง์ธ๋ผ styled()ํจ์๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. ํจ์๋ css ์ ์ธ ๋ด์ฉ์ ์ธ์๋ก ๋ฐ๋๋ฐ ๊ฐ์ฒดํ์ผ๋ก ๋๊ฒจ๋ ๋๊ณ , ๋ฌธ์ํ์ผ๋ก ๋๊ฒจ๋ ๋๋ค. ๊ทธ๋ฆฌ๊ณ css() ํจ์์ ๋ฐํ ๊ฒฐ๊ณผ๋ฅผ ํด๋น ์คํ์ผ์ ์ ์ฉํ๊ณ ์ถ์ HTML ์์๋ React ์ปดํฌ๋ํธ์ css๋ผ๋ pro..
2023.08.14 -
React ์ปดํฌ๋ํธ css ์คํ์ผ๋ง ๊ธฐ๋ณธ / Style Components(prop๋ก ํ์ฅ, as, ์์ฑ ์ถ๊ฐ, ์ ๋๋ฉ์ด์ , ๊ฐ์ ์ ํ์)
React ์ปดํฌ๋ํธ css ์คํ์ผ๋ง ๊ธฐ๋ณธ ๊ธฐ๋ณธ์ด๋ผ๊ธฐ ๋ณด๋ค๋, react์ปดํฌ๋ํธ๋ฅผ ๋ณ๋์ css-in-js๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ์์ํ๊ฒ css๋ก๋ง ์คํ์ผํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค. Inline Style ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์ฌ์ด ๋ฐฉ๋ฒ์ React ์ปดํฌ๋ํธ์ css์ธ๋ผ์ธ ์คํ์ผ์ ๋ฐ๋ก ์ ์ฉํ๋ ๊ฒ์ด๋ค. ์ผ๋ฐ์ ์ธ ์น ํ์ด์ง์์ ์ธ๋ผ์ธ ์คํ์ผ์ ์ ์ฉํ ๋์ฒ๋ผ html์๋ฆฌ๋จผํธ์ style์์ฑ์ ์ด์ฉํ๋ฉด ๋๋ค. ํ์ง๋ง, React๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ ์นํ์ด์ง์์ ์ธ๋ผ์ธ ์คํ์ผ์ ์ ์ฉํ ๋์ ์ฝ๊ฐ์ ์ฐจ์ด์ ์ด ์๋ค. -style ์์ฑ๊ฐ์ ์ผ๋ฐ ๋ฌธ์์ด์ด ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๊ฐ ํ ๋น๋์ผ ํ๋ค. - CSS ์์ฑ๋ช ์ด ์ผ๋ฐฅ ์ผ์ด์ค(kebab case)์ด ์๋ ์นด๋ฉ ์ผ์ด์ค(camel case)๋ก ์์ฑ๋์ผ ํ๋ค. ์ด..
2023.08.13 -
์ฝ๋ ์คํ๋ฆฌํ ์ฌ์ฉํ๊ธฐ
์ฝ๋ ์คํ๋ฆฌํ (code splitting) ? ํ์ด์ง๊ฐ ๋ก๋ ๋ ๋, ๋ถํ์ํ ์ปดํฌ๋ํธ๋ ๋ถ๋ฌ์ค์ง ์๊ณ ํ์ํ ์ปดํฌ๋ํธ๋ค๋ง ๋ถ๋ฌ์ค๋๋ก ํ๋ ๊ธฐ๋ฒ. ๋ฆฌ์กํธ์์๋ ์ ์ฉ์ด ๋์ง๋ง, ์นํฉ(webpack)์ ์ด์ฉํ ๋ค๋ฅธ ์ดํ๋ฆฌ์ผ์ด์ ์์๋ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ์นํฉ๋ ๊ฐ๋จ ์ค๋ช ํ์๋ฉด, ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ํ์ผ๋ค์ ๋ฌถ๊ณ ์์ถํ์ฌ ํ๋์ ๊ฒฐ๊ณผ๋ฌผ๋ก ๋ง๋ค์ด์ฃผ๋ ์น๊ฐ๋ฐ ๋๊ตฌ์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ๋ ๊ณผ์ ์์ ๋น๋(build)๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋๋ฐ, ์ด ๊ณผ์ ์์ ๋ชจ๋ ํ์ผ๋ค์ด ํ๋๋ก ํฉ์ณ์ง๊ฒ ๋๋ค. ์ฐ๋ฆฌ๊ฐ index.js, components๋ค๋ก ๋๋ด๋ ์์ค ์ฝ๋๋ค์ด ํ๋๋ก ํฉ์ณ์ง๊ฒ ๋๋ค. ๊ฐ๋จํ ํ๋ก์ ํธ๋ผ๋ฉด ์ํฅ์ด ์ ๊ฒ ์ง๋ง, ๊ฑฐ๋ํ ํ๋ก์ ํธ๋ผ๋ฉด(ํนํ spaํ์ด์ง์์) ๊ธธ๊ณ ๋ง์ js์ฝ๋๊ฐ ํ์ํ๋ค. ์ด ๊ฒฝ์ฐ ์ธ..
2023.08.12 -
react-router๋ฅผ ํตํ ๋ฆฌ์กํธ ์ฑ๊ธํ์ด์ง ๋ง๋ค๊ธฐ / ํด๋ ๊ตฌ์กฐ
ํด๋ ๊ตฌ์กฐ ์ด๊ฒ์ด ํ์๋ ์๋. ๋ณธ์ธ ์ทจํฅ๊ป ๋ค์ํ ํด๋๊ตฌ์กฐ ์๋๋ฅผ ํด๋ณด๋ ๊ฒ์ด ์ข์. - ํ์ด์ง๋ ํ์ด์ง์ด๋ค. - ํ์ด์ง๊ฐ ๊ฒ์๋๋ ๊ตฌ์ฑ์ layouts - ์ปค์คํ ํ ์ hooks, ๊ธฐํ๋utils - ๊ฐ ์ปดํฌ๋ํธ๋ ์ปดํฌ๋ํธ ํด๋ ์๋ index.tsx(JSX)์ styles.tsx(์คํ์ผ๋ง) App.tsx> import React from 'react'; import {Switch, Route, Redirect} from 'react-router-dom'; import LogIn from '@pages/Login'; import SignUp from '@pages/SignUp'; const App = () => { return }; export default App; Switch ๋? ์ฌ๋ฌ๊ฐ์ง ์ ํ์ง..
2023.08.12 -
webpack-dev-server๋ก ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์๋ฒ ๋์ฐ๊ธฐ
webpack-dev-server๋? webpack-dev-server๋ ๋งค ์ฝ๋ ๋ณ๊ฒฝ๋ง๋ค ๋น๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ํ์ธํ ์ ์๋ ๊ฐ๋ฐ์ฉ ์๋ฒ๋ฅผ ์ ๊ณตํด์ค๋ค. ์ค์ ๋น๋๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ webpack-dev-server๋ ์ค์ ๋ฒ๋ค๋ง ๋ ๊ฒฐ๊ณผ๋ฌผ์ ํ์ผ๋ก ์์ฑํ์ง ์๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋์ ์ฑ ๋ณด์ฌ์ค๋ค. ๊ทธ๋์ ๋น ๋ฅธ ์๋๋ก ์ฆ์ ๋ณ๊ฒฝ๋ ์ฝ๋๋ฅผ ๊ฐ๋ฐ ์๋ฒ์ ๋ฐ์ํ์ฌ ๋ณด์ฌ์ค ์ ์๋ค. webpack-dev-serve ์ค์นํ๊ธฐ npm i webpack-dev-server -D ์ฌ๊ธฐ์ -D ๋ ๊ฐ๋ฐ์ฉ ์ด๋ผ๋ ๋ป์ด๋ค. npm i webpack-cli ์ด๊ฒ๋ ํจ๊ป ์ค์น! : hot reloading์ ์ฌ์ฉํ๊ธฐ ์ํด webpack-dev-server๋ฅผ ์ฌ์ฉํ๋ค. : proxy ์๋ฒ ์์ฒญ๋ webpack-dev-serv..
2023.08.11