์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Gatsby
- history api
- useEffect
- fetch API
- useRef
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋ก ํธ์๋
- REACT
- float
- Flex
- ๋ฐ๋ธ์ฝ์ค
- position
- ์ฝ๋ฉํ ์คํธ
- ๋ธ๋ก๊ทธ
- ํ๋ก๊ทธ๋๋จธ์ค
- Props
- ์๊ณ ๋ฆฌ์ฆ
- CSS
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- Today
- Total
Daehyunii's Dev-blog
ref: DOM์ ์ด๋ฆ ๋ฌ๊ธฐ ๋ณธ๋ฌธ
ref : DOM์ ์ด๋ฆ ๋ฌ๊ธฐ
1. ref๋ ์ด๋ค ์ํฉ์์ ์ฌ์ฉํด์ผ ํ ๊น?
ref๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ํ ๋ฌธ์ฅ์ผ๋ก 'DOM์ ๊ผญ ์ง์ ์ ์ผ๋ก ๊ฑด๋๋ ค์ผ ํ ๋'์ด๋ค. ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์์ DOM ์์๋ฅผ ์กฐ์ํ๋๊ฒ๊ณผ ์ ์ฌํ๋ค. ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ DOM์ ์ง์ ๊ฑด๋๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๊ต์ฅํ ๋ง์์ง๋ง, ๋ฆฌ์กํธ์์๋ ๊ตณ์ด DOM์ ์ ๊ทผํ์ง ์์๋ state๋ก ๊ตฌํํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
2. DOM์ ๊ผญ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ์ธ์ ์ผ๊น?
- ํน์ input์ ํฌ์ปค์ค ์ฃผ๊ธฐ
- ์คํฌ๋กค ๋ฐ์ค ์กฐ์ํ๊ธฐ
- canvas ์์์ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ
๋ฑ ๋ง์ ์ํฉ์ด ์๊ณ ์ด์ฉ ์ ์์ด DOM์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ค. ์ด๋ฐ ์ํฉ์์ ref๋ฅผ ์ฌ์ฉํ๋ค.
3. ref ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
ref๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํด๋์คํ๊ณผ ํจ์ํ์ ๋ฐ๋ผ ์์ฑ ๋ฐฉ๋ฒ์ ์ฐจ์ด๊ฐ ์์ผ๋ ๋์ ์๋ฆฌ๋ ๋์ผํ๋ค. ์ฐ์ ํด๋์คํ ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด ๋ณด์๋ฉด ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋ ์์ฑํ ์ ์๋ค.
1. callbackํจ์๋ฅผ ํตํด ref ์ค์ ํ๋ ๋ฐฉ๋ฒ
ref๋ฅผ ๋ฌ๊ณ ์ ํ๋ ์์์ ref๋ผ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ props๋ก ์ ๋ฌํด ์ฃผ๋ฉด ๋๋ค. ์ด ์ฝ๋ฐฑ ํจ์๋ ref ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ฐ๊ณ , ํจ์ ๋ด๋ถ์์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ref๋ฅผ ์ปดํฌ๋ํธ์ ๋ฉค๋ฒ ๋ณ์๋ก ์ค์ ํด ์ค๋ค.
<input ref={(ref) => {this.input=ref}} />
2. createRef๋ฅผ ํตํ ref ์ค์
์ด ๋ฐฉ๋ฒ์ ๋ฆฌ์กํธ์ ๋ด์ฅ๋์ด ์๋ createRef ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. createRef๋ฅผ ์ฌ์ฉํ์ฌ ref๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ฐ์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ฉค๋ฒ ๋ณ์๋ก React.createRef( )๋ฅผ ๋ด์ ์ฃผ์ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ๋ฉค๋ฒ ๋ณ์๋ฅผ ref๋ฅผ ๋ฌ๊ณ ์ ํ๋ ์์์ ref props๋ก ๋ฃ์ด ์ฃผ๋ฉด ref ์ค์ ์ด ์๋ฃ๋๋ค.
import { Component } from 'react';
class Practice extends Component {
input = React.createRef();
handleFocus = () => {
this.input.current.focus();
}
render() {
return (
<div>
<input ref={this.input} />
</div>
)
}
}
export default Practice;
์ฐธ๊ณ ๋ก ref๋ฅผ ์ค์ ํด ์ค DOM์ ์ ๊ทผํ๋ ค๋ฉด this.input.current๋ก ์กฐํํด์ผ ํ๋ค.
3. ํจ์ํ ์ปดํฌ๋ํธ ref ๋ฌ๊ธฐ
ํจ์ํ ์ปดํฌ๋ํธ์์ ref๋ฅผ ๋ฌ๊ธฐ ์ํด์๋ useRef Hook์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ์ createRef์ ์ ์ฌํ๋ค.
4. ์ฃผ์์ฌํญ
์์์๋ ์ธ๊ธํ์ง๋ง ์ปดํฌ๋ํธ ๋ด๋ถ์์ DOM์ ์ง์ ์ ๊ทผํด์ผ ํ ๋ ref๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๋จผ์ ref๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋์ง ์ฌ์ ์ ๊ณ ๋ คํ ํ์ ํ์ฉํ๋ ์ต๊ด์ ๋ค์ด๋ฉด ์ข๋ค. ์ฐธ๊ณ ๋ก ์๋ก ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ต๋ฅํ ๋ ref๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด๋ ์๋ชป๋ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด๋ค. ๋ฌผ๋ก ๊ฐ๋ฅ์ ํ์ง๋ง ์ฑ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ์คํ๊ฒํฐ์ฝ๋๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ์ ์ง ๋ณด์๊ฐ ๋ถ๊ฐ๋ฅํด ์ง์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฆฌ์กํธ์์ ์ปดํฌ๋ํธ๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ต๋ฅํ ๋๋ ์ธ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ชจ -> ์์ ํ๋ฆ์ผ๋ก ๊ต๋ฅํ๋ ๊ฒ์ด ์ข์ ์ค๊ณ์ด๋ค.
'๐ Language & CS knowledge > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์ vs filter( ) ๋ฉ์๋ ์ฝ๋ ๊ฐ๋ ์ฑ ๋น๊ต (0) | 2022.12.22 |
---|---|
ํ์ด์ง์์ ํด๋ฆญ์ ๋ฐ์ดํฐ ๋ณต์ฌํ๊ธฐ (0) | 2022.12.22 |
์ด๋ฒคํธ ํธ๋ค๋ง (0) | 2022.12.22 |
์ปดํฌ๋ํธ ํน์ง๋ค (0) | 2022.12.22 |
JSX๋? (0) | 2022.12.20 |