ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ findDOMNode๋ ๋ฌด์์ธ๊ฐ์?
**findDOMNode**๋ React์์ ํน์ DOM ์์๋ฅผ ์ง์ ์ฐพ์ ๋ ์ฌ์ฉํ๋ ํจ์์์.
React ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ ๋๋ง๋๋ฉด **HTML ํ๊ทธ(์ฆ, DOM ์์)**๊ฐ ๋ง๋ค์ด์ง๋๋ฐ์,
์ด DOM ์์์ ์ง์ ์ ๊ทผํ๊ณ ์ถ์ ๋ findDOMNode๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐ ๋น์ ๋ก ์ดํดํ๊ธฐ: ์ฌ๋ฌผํจ ์ฐพ๊ธฐ
์ฌ๋ฌ๋ถ์ด ํ๊ต์ ๊ฐ์ ์๊ธฐ ์ฌ๋ฌผํจ์ ์ฐพ๋๋ค๊ณ ์์ํด ๋ณด์ธ์. ๐
- React ์ปดํฌ๋ํธ๋ ์ฌ๋ฌผํจ ๋ฒํธํ
- ์ฌ๋ฌผํจ๋ง๋ค **๋ฒํธ(์ปดํฌ๋ํธ)**๊ฐ ๋ถ์ด ์์ด์.
- DOM ์์๋ ์ฌ๋ฌผํจ ์์ฒด
- ์ฐ๋ฆฌ๊ฐ ๋์ผ๋ก ๋ณด๊ฑฐ๋ ์์ผ๋ก ๋ง์ง ์ ์๋ **์ฌ๋ฌผํจ(HTML ํ๊ทธ, DOM ์์)**์ด์์.
- findDOMNode๋ ์ฌ๋ฌผํจ์ ์ฐพ๋ ๋๊ตฌ
- "5๋ฒ ์ฌ๋ฌผํจ์ด ์ด๋ ์์ง?"๋ผ๊ณ ๋ฌผ์ด๋ณผ ๋ findDOMNode๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ์ฌ๋ฌผํจ ์์น๋ฅผ ์๋ ค์ค์.
- ์ฆ, ์ปดํฌ๋ํธ๋ฅผ ํตํด ์ค์ DOM ์์๋ฅผ ์ฐพ์๋ด๋ ์ญํ ์ ํฉ๋๋ค.
๐ ๏ธ findDOMNode ์ฌ์ฉ๋ฒ
findDOMNode๋ ReactDOM ํจํค์ง์ ํฌํจ๋์ด ์์ด์.
์๋ ์์ ๋ฅผ ํตํด ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ๋ณผ๊น์?
1. findDOMNode ๊ธฐ๋ณธ ์์
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
class MyComponent extends Component {
componentDidMount() {
// findDOMNode๋ฅผ ์ฌ์ฉํด DOM ์์์ ์ ๊ทผ
const domElement = ReactDOM.findDOMNode(this);
console.log(domElement); // ์ฝ์์ ํด๋น DOM ์์๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค
}
render() {
return <div>์๋
ํ์ธ์! ์ ๋ DOM์
๋๋ค ๐</div>;
}
}
export default MyComponent;
๐ ์ฝ๋ ์ค๋ช
- ReactDOM.findDOMNode(this)
- findDOMNode๋ ์ปดํฌ๋ํธ ์ธ์คํด์ค(์ฌ๊ธฐ์๋ this)๋ฅผ ์ ๋ฌ๋ฐ์์
ํด๋น ์ปดํฌ๋ํธ์ ์ค์ DOM ์์๋ฅผ ์ฐพ์์ค๋๋ค.
- findDOMNode๋ ์ปดํฌ๋ํธ ์ธ์คํด์ค(์ฌ๊ธฐ์๋ this)๋ฅผ ์ ๋ฌ๋ฐ์์
- ๊ฒฐ๊ณผ
- ์ฝ์์ <div>์๋ ํ์ธ์! ์ ๋ DOM์ ๋๋ค ๐</div>๋ผ๋ DOM ์์๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
- ์ด๋ ๊ฒ ์ฐ๋ฆฌ๋ React ์ปดํฌ๋ํธ๋ฅผ ํตํด ์ง์ DOM์ ์ ๊ทผํ ์ ์๊ฒ ๋ผ์.
2. findDOMNode๋ก ์คํ์ผ ์กฐ์ํ๊ธฐ
findDOMNode๋ฅผ ์ฌ์ฉํด DOM ์์์ ์คํ์ผ์ ๋ณ๊ฒฝํ ์๋ ์์ด์.
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
class MyComponent extends Component {
componentDidMount() {
const domElement = ReactDOM.findDOMNode(this);
domElement.style.color = 'blue'; // ํ
์คํธ ์์์ ํ๋์์ผ๋ก ๋ณ๊ฒฝ
}
render() {
return <div>์๋
ํ์ธ์! ์์ด ๋ณํ์ด์! ๐จ</div>;
}
}
export default MyComponent;
๐ ์ฝ๋ ์ค๋ช
- findDOMNode๋ก ์ฐพ์ DOM ์์์ ์คํ์ผ์ ์ ๊ทผํด์.
- **style.color**๋ฅผ ๋ณ๊ฒฝํด์ ํ ์คํธ ์์์ ํ๋์์ผ๋ก ๋ฐ๊ฟ์.
๐จ findDOMNode๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์
- findDOMNode๋ ๋น์ถ์ฒ(deprecated) ๊ธฐ๋ฅ์ด์์
- React ํ์ findDOMNode ๋์ **ref**๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๊ณ ์์ด์.
- ์ด์ ๋ findDOMNode๊ฐ React์ ์ ์ธ์ ๋ฐฉ์๊ณผ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ด์ฃ .
- ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉํ ์ ์์ด์
- findDOMNode๋ ํด๋์ค ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ ์ ์์ด์.
- ํจ์ํ ์ปดํฌ๋ํธ์์๋ ๋์ **useRef**๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
โ findDOMNode ๋์ ref ์ฌ์ฉํ๊ธฐ
React์์ ref๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์์ ํ๊ณ ๊ฐ๋จํ๊ฒ DOM ์์์ ์ ๊ทผํ ์ ์์ด์.
์๋๋ ref๋ฅผ ์ฌ์ฉํ ๋์ผํ ์์ ์์.
import React, { Component, createRef } from 'react';
class MyComponent extends Component {
constructor(props) {
super(props);
this.myRef = createRef(); // ref ์์ฑ
}
componentDidMount() {
this.myRef.current.style.color = 'blue'; // ref๋ฅผ ์ฌ์ฉํด DOM ์คํ์ผ ๋ณ๊ฒฝ
}
render() {
return <div ref={this.myRef}>์๋
ํ์ธ์! ์์ด ๋ณํ์ด์! ๐จ</div>;
}
}
export default MyComponent;
๐ ref๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ์
- ๋ ์ ์ธ์ ์ด๊ณ ์ง๊ด์ ์ด์์
- ref๋ฅผ ํตํด DOM ์์์ ์ ๊ทผํ๋ฉด ์ฝ๋๊ฐ ๋ ๊น๋ํด์ ธ์.
- ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
- useRef ํ ์ ์ฌ์ฉํ๋ฉด ํจ์ํ ์ปดํฌ๋ํธ์์๋ DOM ์์๋ฅผ ๋ค๋ฃฐ ์ ์์ด์.
๐ ํ ์ค ์์ฝ
**findDOMNode**๋ React์์ ํด๋์ค ์ปดํฌ๋ํธ์ DOM ์์์ ์ง์ ์ ๊ทผํ ๋ ์ฌ์ฉํ๋ ํจ์์ง๋ง,
ํ์ฌ๋ **ref**๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์์ ํ๊ณ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ด์์!
๐ ๋ง๋ฌด๋ฆฌ
React์ **findDOMNode**๋ ์ค๋๋ ๊ธฐ๋ฅ์ด์ง๋ง, DOM ์์๋ฅผ ์ฐพ์์ผ ํ๋ ์ํฉ์์ ์ฌ์ฉ๋์์ด์.
ํ์ง๋ง ์ด์ ๋ ๋ ๊น๋ํ๊ณ ์์ ํ ๋ฐฉ๋ฒ์ธ **ref**๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ข์ต๋๋ค!
'web > react dom' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
prefetchDNS (2) | 2024.12.16 |
---|---|
preconnect (2) | 2024.12.16 |
hydrate (1) | 2024.12.16 |
flushSync (1) | 2024.12.16 |
createPortal (1) | 2024.12.16 |
- Total
- Today
- Yesterday
- react dom hook
- dns-prefetch
- Props
- useRef
- react hook
- private regisirty
- ์คํ์
- useid
- experimental_taintuniquevalue
- finddomnode
- zustand
- state
- ์ธ๋ถํฐํธ
- react dom
- ์ํ๊ด๋ฆฌ
- component
- preconnect
- image pull
- usedeferredvalue
- react
- ์ ์ฅ์
- useformstatus
- ๋ฒ ํ
- Nextjs
- useinsertioneffect
- experimental_taintobjectreference
- Store
- prefetchdns
- experimental
- flushsync
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |