์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- CSS
- ๋ฐ๋ธ์ฝ์ค
- Props
- ๋ธ๋ก๊ทธ
- ํ๋ก๊ทธ๋๋จธ์ค
- Gatsby
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- ์๊ณ ๋ฆฌ์ฆ
- useEffect
- position
- useRef
- REACT
- history api
- Flex
- fetch API
- ํ๋ก ํธ์๋
- float
- ์ฝ๋ฉํ ์คํธ
- Today
- Total
Daehyunii's Dev-blog
React, useEffect, useRef, props ๋ณธ๋ฌธ
React๋?
1. React ์๊ฐ
๋ฆฌ์กํธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ฆฌ์กํธ๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ๋ค์ ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ์ต๋์ ํจ์จ์ ๋ด๊ธฐ ์ํจ์ด๋ค.
2. React ํน์ง
- Reactive Programming์ด๋ค.
- React๋ ์ํ๋ฅผ ๊ด์ฐฐํ๊ณ ๋ณํ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฐ๊ด๋ ๊ณณ์์ ์ฐ์ฐ์ด ์ํ๋๋ค.
- MVC์์ ๋ฆฌ์กํธ๋ V๋ง ๊ด๋ฆฌํ๋ค. ์ฌ๊ธฐ์ View๋ ์ปดํฌ๋ํธ์ด๋ค. ์ปดํฌ๋ํธ๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๋
๋ฆฝ์ ์ธ ๊ฐ์ฒด์ด๋ฉฐ ๋ฐํ์ ์์ ์ ์ฌ์ฉ๋๋ค.
- ์ปดํฌ๋ํธ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ํ๋ผ ์ ์๋ค.
- ์ปดํฌ๋ํธ ์กฐํฉ์ผ๋ก View๋ฅผ ๊ตฌ์ฑํ๋ค.
- Virtual DOM์ด๋ค.
- ํ์ํ ๋ถ๋ถ๋ง ํ ๋ฒ์ ๋ ๋๋งํ๋ค.
- ์ฑ๋ฅ๋ณด๋ค๋ ๊ฐ๋ฐ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉ๋์๋ค.
2. create-react-app, JSX
2.1 create-react-app
์๋ก์ด ๋ฆฌ์กํธ ์ฑ์ ๋ง๋ค๊ธฐ ์ฝ๊ฒ ๋์์ค๋ค.
npx create-react-app [app์ด๋ฆ]
2.2 JSX
์๋ฐ์คํฌ๋ฆฝํธ์ XML์ ์ถ๊ฐํ์ฌ ํ์ฅํ ๋ฌธ๋ฒ์ด๋ค. UI๊ฐ ์ด๋ป๊ฒ ์๊ฒจ์ผ ํ๋์ง ์ค๋ช ํ๊ธฐ ์ํด React์ ํจ๊ป ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ด๋ฏธ class๊ฐ ์์ฝ์ด์ด๊ธฐ ๋๋ฌธ์ HTML์ class๋ถ๋ถ์ className์ ์ฌ์ฉํด์ผํ๋ค.
- ์ต์์๊ฐ ํ๋์ฌ์ผ ํ๋ค.
- ํํ์์ด๋ ์กฐ๊ฑด๋ฌธ๋ ๋ฃ์ ์ ์๋ค. ์ค๊ดํธ ๋ด๋ถ์ ์์ฑํ๋ฉด ๋๋ค.
3. ์ปดํฌ๋ํธ
๋ฆฌ์กํธ์ ์ปดํฌ๋ํธ๋ ํจ์์ด๋ค. UI๋ฅผ ์ถ์์ ์ผ๋ก ๋ฐ๋ผ๋ณด๊ณ ๊ณตํต์ ์ ์ฐพ์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๋ฉด ์ฌ์ฌ์ฉํ ์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์๋ค. ์ปดํฌ๋ํธ์์ ๋ฐ์ดํฐ๋ ๋จ๋ฐฉํฅ์ผ๋ก ์ ๋ฌ๋๋ค.
4. Props
props๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค ์ ์๋ค.
// props.size => ๊ตฌ์กฐ๋ถํดํ ๋น
function Button({ size = 30 }) {
return (
<button style={ width: size }></button>
)
}
import Button from './Button.js'
function App() {
return (
...
<Button size={50} />
)
}
4.1 children
props์ children์ ์ฌ์ฉํ๋ฉด ์์ ์ปดํฌ๋ํธ ํ๊ทธ ๋ด๋ถ์ ๋ด์ฉ์ด children์ ์ ๋ฌ๋๋ค.
function Paragraph({ children }) {
return (
<p>{ children }</p>
)
}
import Paragraph from './Paragraph.js'
function App() {
return (
...
<Paragraph>
<code>App.js</code> is running.
</Paragraph>
)
}
๋ถ๊ธฐ์ ๋ฐ๋ณต
1. ๋ถ๊ธฐ
์ํ ๊ฐ์ด true์ธ์ง false์ธ์ง์ ๋ฐ๋ผ ์์๋ฅผ ๋ณด์ฌ์ค์ง ๋ง์ง๋ฅผ ๋ํ๋ผ ์ ์๋ค. ๋ ผ๋ฆฌ๊ณฑ(&&)์ ์ฌ์ฉํ๊ฑฐ๋ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
2. ๋ฐ๋ณต
map์ด๋ filter ๋ฑ์ ๊ณ ์ฐจํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ๋ฐ๋ณตํด์ค ์ ์๋ค. map์ ์ฌ์ฉํ ๋๋ ๊ผญ ์์์ key ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค.
์ด๋ฒคํธ ๋ฐ์ธ๋ฉ, ๋ฆฌ์กํธ ํ
1. ์ปดํฌ๋ํธ์์ ์ง์ญ ์ํ ๊ด๋ฆฌํ๋ ๋ฒ
useState()๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ญ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค. ์๋์์ count๊ฐ ์ํ์ด๊ณ , setCount๊ฐ ์ํ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ํจ์๋ฅผ ๋ํ๋ธ๋ค.
const [count, setCount] = useState(0)
2. ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉํ๊ธฐ
์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ํจ์๋ฅผ ๋ง๋ค์ด์ ์์์ ์ด๋ฒคํธ์ ๋ฐ์ธ๋ฉํด์ฃผ๋ฉด ๋๋ค.
...
const handleIncrease = () => {
setCount(count + 1)
}
return (
...
<button onClick={handleIncrease}>+</button>
)
3. ๋ถ๋ชจ ์ปดํฌ๋ํธ์๊ฒ ๋ฉ์ธ์ง ์ ๋ฌํ๊ธฐ
props๋ฅผ ํตํด ์ ๋ฌํด์ค ์ ์๋ค. ์๋์์๋ props๋ก ํจ์๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ฒ์ ํ์ธํด๋ณด์.
function Counter({ onChange }) {
const handleIncrease = () => {
setCount(count + 1)
if (onChange) onChange(count + 1)
}
return (
...
<button onClick={handleIncrease}>+</button>
)
}
4. useEffect
๋ฌด์ธ๊ฐ ๋ณํ๊ฐ ์์ ๋ ๊ฐ์งํ์ฌ ๋ฐ์ํ๋ hook์ด๋ค. useEffect๋ ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ก๋๋ ๋ ์คํ๋๋ค. ์ํ ๋ณํ๋ฅผ ๊ฐ์งํ๊ฑฐ๋ ์ ์ญ์ ์ธ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ๋ ์ธ ์ ์๋ค. return์ผ๋ก ๋ฐํ๋ ํจ์๋ ์ปดํฌ๋ํธ๊ฐ ์ ๊ฑฐ๋ ๋ ์คํ๋๋ค.
5. useRef
DOM์ ์ง์ ์ ๊ทผํ ๋ ์ฌ์ฉํ๊ฑฐ๋ ์ง์ญ ๋ณ์๋ก ์ฌ์ฉํ ๋ ์ฌ์ฉํ ์ ์๋ค. ์ฌ๊ธฐ์ ์ง์ญ ๋ณ์๋ก ์ฌ์ฉํ๋ ๊ฒ์ useState๋ก๋ ํ ์ ์์ง๋ง ํฐ ์ฐจ์ด๊ฐ ์๋ค.
- useState๋ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ๋ค์ ๋ ๋๋ง์ ํ๋ค.
- useRef๋ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด๋ ๋ค์ ๋ ๋๋งํ์ง ์๋๋ค.
'๐ Language & CS knowledge > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JSX๋? (0) | 2022.12.20 |
---|---|
์ปดํฌ๋ํธ ์คํ์ผ๋ง, useMemo, useCallback, Custom Hook (0) | 2022.12.19 |
์ฌ์ฉ์ฌ๋ก - ํ์ด์ง๋ค์ด์ ๋ง๋ค๊ธฐ (0) | 2022.12.18 |
classํ ์ปดํฌ๋ํธ - pureComponent (0) | 2022.12.16 |
classํ ์ปดํฌ๋ํธ - shouldComponentUpdate( ) (0) | 2022.12.15 |