๋ค์ด๊ฐ๊ธฐ ์ React ๋์ ๋ฐฉ์ โ
โ ๋จผ์ ์ต์์ ์ปดํฌ๋ํธ ์ ์
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App /> // (3)
</React.StrictMode>,
document.getElementById('root') // (2)
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
- React App ์ด ์๋ํ๋ ๋ฐฉ์์
- index.js ์์
- id ๊ฐ
root
์ธ ์์๋ฅผ ์ฐพ๊ณ
- ๊ทธ ์์์
<App />
์ด๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์์ ๋ ๋๋ง์ ํฉ๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ฐ๊ฟ ์ ์์ผ๋ ๊ด๋ก์ ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ต์์ ์ปดํฌ๋ํธ๋ฅผ App ์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ ๋๋ฌธ์ ์ด์ ๋ ์์ด ๋ถ๋ชํ ํ์๋ ์์ต๋๋ค.
โ ๋ซํ ๊ท์น
- ํ๊ทธ๋ฅผ ์ด๋ฉด ๋ฐ๋์ ๋ซ๋ ํ๊ทธ๊ฐ ์์ด์ผ ํฉ๋๋ค.
<div> (x) , <div></div> (o)
<a>
ํ๊ทธ๋ <image>
ํ๊ทธ , <br>
๋ฑ HTML์์ ๊ธฐ์กด์ ๋ซ์ ํ์๊ฐ ์์๋ ํ๊ทธ ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ซ์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ๊ฒ ํด์ผ ํฉ๋๋ค.
<a /> , <image />
โ์ต์์ ํ๊ทธ ๊ท์น
function App() {
return (
<div className="App">
<MyHeader />
<header className="App-header">
<h2>์๋
๋ฆฌ์กํธ</h2>
</header>
</div>
);
}
- ์ต์์ ํ๊ทธ๋ ์์
return
๋ฌธ ์์์ ์ฆ, ์ปดํฌ๋ํธ์ ๊ตฌ์ฑ ์ค์ ๊ฐ์ฅ ๋ฐ๊นฅ์ ์์นํ๋ ํ๊ทธ
- ๋ฐ๋์ ํ๋์ ์ต์์ ํ๊ทธ์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
- ๋ง์ฝ ์ต์์ ํ๊ทธ๋ฅผ ์ง์ฐ๊ฒ ๋๋ฉด ์๋ฌ๊ฐ ๋ฐ์ ํฉ๋๋ค.
function App() {
return (
<MyHeader />
<header className="App-header">
<h2>์๋
๋ฆฌ์กํธ</h2>
</header>
);
}
โ ํ์ง๋ง ์ต์์ ํ๊ทธ๋ก ๋ฌถ๊ณ ์ถ์ง ์๋ค๋ฉด โ
import React from 'react'; // ํ์ผ ์๋จ์ import ํ
function App() {
return (
<React.Fragment> // ์ถ๊ฐ
<MyHeader />
<header className="App-header">
<h2>์๋
๋ฆฌ์กํธ</h2>
</header>
</React.Fragment>
);
}
- ์์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
- ํน์ ์๋์ ๊ฐ์ด ์ฌ์ฉ
function App() {
return (
<> // ์ถ๊ฐ
<MyHeader />
<header className="App-header">
<h2>์๋
๋ฆฌ์กํธ</h2>
</header>
</>
);
}
โ JSX ๋ฌธ๋ฒ๊ณผ CSS
- JSX ์์๋ class ๋ผ๋ ๋จ์ด๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์์ฝ์ด๋ผ์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅ ํฉ๋๋ค.
- ๊ทธ๋์
className
์ ์ฌ์ฉ ํฉ๋๋ค.
- ์๋จ์
import
์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํ์ฌ CSS๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
- ๊ทธ ํ ๊ฐ ์์๋ค์๊ฒ
className
์ผ๋ก ์ ์ฉ
- ํ๊ทธ ์
๋ ํฐ, id ์
๋ ํฐ ์ฌ์ฉ ๊ฐ๋ฅ ํฉ๋๋ค.
โ App.js
import './App.css'; // ์ด ๋ถ๋ถ
import MyHeader from './my_header';
function App() {
return (
<div className="App">
<MyHeader />
<h2>์๋
๋ฆฌ์กํธ</h2>
</div>
);
}
export default App;
โ inline ๋ฐฉ์์ผ๋ก CSS ์ฌ์ฉ
// import './App.css'; // ์ด ๋ถ๋ถ
import MyHeader from './my_header';
function App() {
const style = {
App : {
background: "black",
},
h2: {
color: "red",
}
};
return (
<div style={style.App}>
<MyHeader />
<h2 style={style.h2}>์๋
๋ฆฌ์กํธ</h2>
</div>
);
}
export default App;
import
๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ๊ฐ์ฒด ์ฒ๋ผ ๋ง๋ค๊ณ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
โ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ ์ฌ์ฉํ๋ ๋ฒ
{}
์ฌ์ฉ
- ๋ฌธ์์ด, ์ซ์, ํจ์๋ฅผ
{}
์์ ๋ฃ์ผ๋ฉด ํํ์ด ๊ฐ๋ฅ ํฉ๋๋ค.
- ํ์ง๋ง ๋ฐฐ์ด, boolean ๊ฐ์ ๋ ๋๋ง์ด ๋์ง ์์ต๋๋ค.
import './App.css';
import MyHeader from './my_header';
function App() {
const name = 'hyunho';
const func = () => {
return 'func';
};
return (
<div className="App">
<MyHeader />
<h2>์๋
๋ฆฌ์กํธ {name}</h2>
<h2>์๋
๋ฆฌ์กํธ {func()}</h2>
<h2>์๋
๋ฆฌ์กํธ {2 + 3}</h2>
</div>
);
}
export default App;
- ๋ํ ์ผํญ ์ฐ์ฐ์๋ฅผ ํ์ฉํ๋ฉด ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ์์๋ฅผ ๋ ๋๋ง ํ ์ ์์ต๋๋ค
- ์ด๋ฐ ๋ฐฉ์์ ๋ ๋๋ง์ ์กฐ๊ฑด๋ถ ๋ ๋๋ง ์ด๋ผ ๋ถ๋ฆ
๋๋ค.
import './App.css';
import MyHeader from './my_header';
function App() {
const name = 'hyunho';
const number = 10;
return (
<div className="App">
<MyHeader />
<h2>์๋
๋ฆฌ์กํธ {name}</h2>
<h2>
{number}๋ : {number % 2 === 0 ? '์ง์' : 'ํ์'}
</h2>
</div>
);
}
export default App;
โ ์ ๋ฆฌ
JSX โ
- ์๋ฐ์คํฌ๋ฆฝํธ์ XML / HTML ์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฅ ๋ฌธ๋ฒ
โ JSX ์ ์ญํ
- JSX๋ก ์์ฑ๋ ์ฝ๋๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ๋ณํ
โ JSX ์ ์ฅ์
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง
- ๊ฐ๋
์ฑ ํฅ์
โ JSX ์ฌ์ฉ๋ฒ
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์ง์
- ์๋ฐ์คํฌ๋ฆฝํธ์ XML ๊ณผ HTML ์ ์์ด์ ์ฌ์ฉ
- ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฝ์
โ ์ฐธ๊ณ