์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- fetch API
- Props
- REACT
- useEffect
- Flex
- history api
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- position
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ธ๋ก๊ทธ
- Gatsby
- CSS
- ์ฝ๋ฉํ ์คํธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฐ๋ธ์ฝ์ค
- useRef
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก ํธ์๋
- float
- Today
- Total
Daehyunii's Dev-blog
JSX๋? ๋ณธ๋ฌธ
JSX๋?
์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฅ ๋ฌธ๋ฒ์ด๋ฉฐ XML๊ณผ ๋งค์ฐ ์ ์ฌํ๋ค.
์ฐ์ JSX๋ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๊ธฐ ์ ๋ฒ๋ค๋ง๋๋ ๊ณผ์ ์์ ๋ฐ๋ฒจ์ ํตํด ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค.
๋ค์ ์์ ๋ฅผ ์ดํด๋ณด์.
JSX
function App() {
return (
<div>
Hello <b>react</b>
</div>
)
}
๋ณํ
function App() {
return React.createElement("div", null, "Hello", React.createElement("b", null, "react"))
}
์ด ์ฒ๋ผ JSX๋ฅผ ํตํด์ ์ฐ๋ฆฌ๋ JavaScript๋ก ์์ฑํด์ผ ํ๋ ์ฝ๋๋ค์ ๊ฐ๋ตํ๊ณ ์๊ฐ์ ์ผ๋ก๋ ๋ณด๊ธฐ ์ข๊ฒ ํํํ ์ ์๋ค. ํ ๋ง๋๋ก JSX๋ ๋ณด๊ธฐ ์ฝ๊ณ ์ฐ๋ฆฌ์๊ฒ ์ต์ํ ํํ๋ก ์์ฑ๋๋ค. ๋ํ JSX ๋ฌธ๋ฒ์ ํ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋ง์น HTML ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฏ์ด ์ฌ์ฉํ ์ ์๋ค.
(JSX)
import TestComponent from "./TestComponent"
const App = () => {
return (
<>
<TestComponent />
</>
)
}
JSX์ ๋ฌธ๋ฒ์ ๋ํด ์์๋ณด์
1. return ๋ฌธ์๋ ํ๋์ ๋ถ๋ชจ ์์๋ง ์กด์ฌํด์ผ ํ๋ค.
๋ค์ ์์ ๋ฅผ ์ดํด๋ณด์.
function App() {
return (
<h1>์ ๋ชฉ</h1>
<div>
Hello <b>react</b>
</div>
)
}
export default App;
์์ ํ๊ทธ๋ฅผ ์ดํด๋ณด๋ฉด h1ํ๊ทธ์ divํ๊ทธ๊ฐ ๊ฐ์ ๋ ๋ฒจ์ ์์นํ๋ค. ์น ๋ธ๋ผ์ฐ์ ๋ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์คํํ๋ ํฐ๋ฏธ๋์ ํตํด ํ์ธํด ๋ณด๋ฉด
Failed to compile์ด๋ผ๋ ๋ฌธ๊ตฌ์ ํจ๊ป ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ํ๋์ ๋ถ๋ชจ ํ๊ทธ๋ก ๊ฐ์ธ์ฃผ์ด์ผ ํ๋ค.
<div>ํ๊ทธ๋ฅผ ํ์ฉํ ์ ์๊ณ React ๋ชจ๋์ ๋ค์ด ์๋ Fragment๋ฅผ ํตํด ๊ฐ์ธ์ค ์ ์๋ค.
import React from 'react';
const { Fragment } = React;
function App() {
return (
<Fragment>
<h1>์ ๋ชฉ</h1>
<div>
Hello <b>react</b>
</div>
</Fragment>
)
}
export default App;
์ฐธ๊ณ ๋ก Flagmentํ๊ทธ๋ <></>๋ก ๊ฐ๋ตํ๊ฒ ํํ์ด ๊ฐ๋ฅํ๋ค!
2. ์๋ฐ์คํฌ๋ฆฝํธ ํํ
JSX๋ ์์์ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ์ฌ์ฉํ ์ ์๋ค. JSX ๋ด๋ถ์์ ์ฝ๋๋ฅผ { }๋ก ๊ฐ์ธ๋ฉด ๋๋ค. ์ฃผ์ํด์ผ ํ ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๋ฌธ๋ฒ์ด ์๋๋ผ ํํ์, ์ฆ ๊ฐ์ผ๋ก ํ๊ฐ๋ ์ ์๋ ๋ฌธ์ด์ด์ผ ํ๋ค๋ ์ ์ด๋ค.
import React from 'react';
const { Fragment } = React;
function App() {
const hello = 'world'
return (
<Fragment>
<h1>{hello}</h1>
<div>
Hello <b>react</b>
</div>
</Fragment>
)
}
export default App;
3. If ๋ฌธ ๋์ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด๋ผ
์์ ๋งํ๋ฏ์ด { } ๋ด๋ถ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ์ฌ์ฉํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก { } ๋ด๋ถ์์ ์กฐ๊ฑด์์ด ํ์ํ ๊ฒฝ์ฐ์๋ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ฅผ ํ์ฉํ ์ ์๋ค.
import React from "react";
const { Fragment } = React;
function App() {
const hello = "world";
return (
<Fragment>
{hello === "world" ? <h1>{hello}</h1> : null}
<div>
Hello <b>react</b>
</div>
</Fragment>
);
}
export default App;
4. ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์์ ๋ ผ๋ฆฌํฉ ์ฐ์ฌ์ ์กฐ๊ฑด๋ถ ๋ ๋๋ง
์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ฅผ ํ์ฉํ๋ ๊ฒ ์ฒ๋ผ &&์ ||๋ฅผ ํ์ฉํด์ ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ํ ์๋ ์๋ค.
import React from "react";
const { Fragment } = React;
function App() {
const hello = "world";
return (
<Fragment>
{hello === "world" && <h1>{hello}</h1>}
<div>
Hello <b>react</b>
</div>
</Fragment>
);
}
export default App;
5. ์ธ๋ผ์ธ ์คํ์ผ๋ง
๋ฆฌ์กํธ์์ DOM ์์์ ์คํ์ผ์ ์ ์ฉํ ๋๋ ๋ฌธ์์ด ํํ๋ก ๋ฃ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด ํํ๋ก ๋ฃ์ด ์ฃผ์ด์ผ ํ๋ค. background-color์ฒ๋ผ -๋ฌธ์๊ฐ ํฌํจ๋๋ ์ด๋ฆ์ด ์๋๋ฐ ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์นด๋ฉ ํ๊ธฐ๋ฒ์ผ๋ก ์์ฑํด์ผ ํ๋ค. ๋ค์ ์์ฑํด ๋ณด๋ฉด backgroundColor๋ก ์์ฑํด์ผ ํ๋ค.
function App() {
const hello = "world";
const style = {
backgroundColor: "black"
}
return <div style={ style }>{ name }</div>
}
export default App;
6. class ๋์ className
์ผ๋ฐ HTML์์ CSS ํด๋์ค๋ฅผ ์ฌ์ฉํ ๋๋ <div class="hello"></div>์ ๊ฐ์ด ์์ฑํ๋ฉด ๋์์ง๋ง JSX์์๋ class๊ฐ ์๋ className์ผ๋ก ์ค์ ํด ์ฃผ์ด์ผ ํ๋ค. <div className="hello"></div>
7. ํ๋์ ํ๊ทธ๋ก ์์ฑํ๋ ํ๊ทธ์ ๊ฒฝ์ฐ์๋ ๊ผญ ๋ซ์ ์ฃผ์ด์ผ ํ๋ค
์ผ๋ฐ HTML์์ <input>์ด๋ผ๊ณ ์์ฑํด๋ ์๋ํ๋๋ฐ ์๋ฌด ์ง์ฅ์ด ์์ง๋ง <input />๋ก ๊ผญ ๋ซ์์ฃผ์ด์ผ ํ๋ค. ์ด๋ฅผ self-closing ํ๊ทธ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
'๐ Language & CS knowledge > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด๋ฒคํธ ํธ๋ค๋ง (0) | 2022.12.22 |
---|---|
์ปดํฌ๋ํธ ํน์ง๋ค (0) | 2022.12.22 |
์ปดํฌ๋ํธ ์คํ์ผ๋ง, useMemo, useCallback, Custom Hook (0) | 2022.12.19 |
์ฌ์ฉ์ฌ๋ก - ํ์ด์ง๋ค์ด์ ๋ง๋ค๊ธฐ (0) | 2022.12.18 |
React, useEffect, useRef, props (0) | 2022.12.18 |