์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- app router emotion
- js ๋ฌธ์์ด ์์ถ
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ํ๊ณ
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง
- ๋ฐฑ์ค 1339๋ฒ ์๋ฐ์คํฌ๋ฆฝํธ
- ์ต์ ๋์ฒด์ด๋
- ์นด์นด์ค ์ฝํ
- ๋ฐฑ์ค 1339๋ฒ js
- ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์์ด ์์ถ
- next13 emotion
- ํ๋ก๊ทธ๋๋จธ์ค ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- suspense ๋ณ๋ชฉํ์
- ๋ฐฑ์ค 2108 nodejs
- js ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- emotion RSC
- suspense ๋์์๋ฆฌ
- emtion app router
- suspense react-query
- suspense ๋น๋๊ธฐ
- ์ฌ์ฉ์ฑ ๊ฐ์
- ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ฝํ
- ์ค์ฝํ
- ๋ฆฌ์กํธ์ฟผ๋ฆฌ suspense
- TypeError: createContext only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more:
- js ์ค์ฝํ
- ๋ฐฑ์ค 1339๋ฒ nodejs
- js
- ๊ตฌ๋ฆํค
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด ์์ถ
- ๋ฐฑ์ค 2108 ์๋ฐ์คํฌ๋ฆฝํธ
- Today
- Total
Lennon FE
[React] React ๊ธฐ๋ณธ - CRA ๋ณธ๋ฌธ
์๋ง ๊ณผ์ ์ ์งํํ๋ฉฐ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ ๊ฒ ๊ฐ๋ค. ์์ง ๋ฆฌ์กํธ๊ฐ ์ต์ํ์ง ์์ ์๋น ๊ณผ์ ๋์ React๋ก ์ํ๋ ๊ฑธ ๊ตฌํํ ์ ์์ ์ ๋๋ก๋ง ํ์ตํ๊ณ , ์ดํ ๋ณธ ๊ณผ์ ์์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ๊น์ด ์๊ฒ ์ ์ฉ ๋ฐ ํ์ตํ ์์ ์ด๋ค. 1๋ฌ ๋ฐ ๋์ ๋งค์ผ๋งค์ผ ํ์ตํ๋ฉฐ ํ๋ก์ ํธ๋ฅผ ์งํํด๋ณด์
React๋?
๋ฆฌ์กํธ๋ JS๊ฐ ์ฒ๋ฆฌํด์ผํ ์ด๋ฒคํธ๊ฐ ๋ค์ํด์ง๊ณ , DOM๋ ๋ค์ํด์ง๊ฒ ๋๋ฉด ์ ๋ฐ์ดํธ๋ฅผ ํ๋ ๊ท์น๋ ๋ง์ด ๋ณต์กํ ๊ธฐ์กด ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ์์ ํ ๋ฐ๊พธ๋ ํ๋ ์์ํฌ์ด๋ค. ๋ฆฌ์กํธ๋ ์ด๋ ํ ์ํ๊ฐ ๋ฐ๋์์ ๋, DOM์ ์ ๋ฐ์ดํธํ๋ ๊ฒ ์๋๋ผ ์์ ๋ค ๋ ๋ฆฌ๊ณ , ์ฒ์๋ถํฐ ๋ชจ๋ ๊ฑธ ์๋ก ๋ง๋ค์ด์ ๋ณด์ฌ์ค๋ค๋ ์์ด๋์ด์์ ๊ฐ๋ฐ๋์๋ค.
๋ค ๋ ๋ฆฌ๊ณ ์๋ก ๋ง๋ค๋ฉด ๋๋ฆฌ์ง ์์๊น?
๋ฆฌ์กํธ๋ Virtual DOM์ ์ด์ฉํด ์๋๋ฅผ ํด๊ฒฐํ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ๊ฐ์์ DOM ์ด๋ฉฐ JavaScript ๊ฐ์ฒด์ด๋ฏ๋ก ์๋๊ฐ ํจ์ฌ ๋น ๋ฅด๋ค!
์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๊ณณ์ UI๋ฅผ Virtual DOM์ ์ด์ฉํด ๋ ๋๋งํ๋ค.
๐ฅ ๋ฆฌ์กํธ๋ ์ํ ๋ณํ์ ์ด๋ป๊ฒ DOM์ ์ ๋ฐ์ดํธ ํ์ง?! ์ ๋ํ ๊ณ ๋ฏผ ์์ด ๋น ๋ฅธ ์ฑ๋ฅ์ผ๋ก ์๋ก ๋ง๋ค์ด ๋ฒ๋ฆฐ๋ค!
CRA
npx create-react-app (ํ๋ก์ ํธ ๋ค์)
CRA๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์๋ค.
์ฒ์์ ์ ๋๋ ํ ๋ฆฌ ์ฒ๋ผ ๊ตฌ์ฑ๋์ด์์ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๋ ๊ธฐ์กด ๊ตฌ์ฑ์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ด๋ฏ๋ก ์๋์ ๊ฐ์ด ํ์ ์๋ ๊ฑด ์ญ์ ํด์ฃผ์
// App.js
function App() {
return <div className='App'>
<h1>Hello REACT!</h1>
</div>;
}
export default App;
// index.js
// react์์ ํ๋ฉด์ renderํ๋ ํ์ผ
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
srcํด๋์ App.js, index.js๋ฅผ ์ผ๋จ ์์ ๊ฐ์ด ์์ ํด์ฃผ์.(cssํ์ผ ๋ฐ icon ๋ฑ์ด ์ฐ๋๋์ด ์์ด ์ญ์ ํ์ผ๋ ์ฐ๋ ํด์ )
index.js์์ ReactDOM์ ๋๋๋ง ํ๋ค๋ ๊ฑธ ๋ณด๋ ๋ฌด์ธ๊ฐ๋ฅผ ํ๋ฉด์ ๋์ด์ฃผ๋ ๊ฒ์ด๊ณ , StrictMode๋ก App ์ปดํฌ๋ํธ๋ฅผ id๊ฐ์ด root์ธ ๊ณณ์ ๋๋๋ง ํ๋ค๋ ๊ฒ ๊ฐ๋ค.
์ฌ๊ธฐ์ ์ ๊น ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ๋ํด ์์๋ณด์.
๋ฆฌ์กํธ๋ style, view ๋ฑ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด import, export๋ฅผ ํตํด moduleํ ํ์ฌ ์กฐ๋ฆฝํด์ ๋ง๋ ๋ค.
์ด๋ ๋ฆฌ์กํธ์ ๊ฐ๋ ฅํ ์ฅ์ ์ด๋ฉฐ, ๊ฐ๋ ์ฑ ๋ฐ ์ ์ง๋ณด์๊ฐ ํฅ์๋๋ค.
๋ํ ๐ฅ์ปดํฌ๋ํธ์ ์ฒซ ๋ฌธ์๋ ๊ผญ ๋๋ฌธ์์ฌ์ผ ํ๋ค!
๋ค์ ๋์์์ id๊ฐ์ด root์ธ ํ๊ทธ๊ฐ ์ด๋์์๊น?
public์ index.html ํ์ผ๋ก ๊ฐ๋ณด์.
31๋ฒ์งธ ์ค์ด id๊ฐ์ด root์ธ div ํ๊ทธ๊ฐ ๋ณด์ธ๋ค. ์ ๋ถ๋ถ์ render๋ฅผ ํด์ ํ๋ฉด์ ํ์ํด์ฃผ๋ ๊ฒ์ด๋ค.
์๋ฆฌ๋ฅผ ๋์ถฉ ์์์ผ๋ ํฐ๋ฏธ๋์์ ํด๋น ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ ํ
npm run start
๋ฅผ ์์ฑํด๋ณด์!
๊ทธ๋ผ ์ด๋ ๊ฒ ๋ฐ๊ฒจ์ค ๊ฒ์ด๋ค. ๋ค์์ JSX๋ฌธ๋ฒ๊ณผ useState, Form ์ ์ด ๋ฑ์ ํ์ตํด๋ณด์!
'๐งโ๐ป Web > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] PostCSS์์ style๊ฐ์ root์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ (2) | 2022.05.21 |
---|---|
[React] React Route์ ๋ํด ์์๋ณด์ (0) | 2022.05.19 |
[React] React ๊ธฐ๋ณธ - JSX ๋ฌธ๋ฒ (0) | 2022.04.12 |
[๋ฆฌ์กํธ, mongoose Error] ๊ฐ๋ฐ ์ค ์๋ฌ๋ฅผ ํ์ธํด๋ณด๊ณ ํด๊ฒฐํด๋ณด์ (2) | 2022.01.10 |
[๋ฆฌ์กํธ ์ฝ๋ ์ปจ๋ฒค์ ] ESLint, Prettier, airbnb style guide๋ก ์ค์ ํ๊ธฐ (0) | 2022.01.05 |