๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์ด API๋Š” ํ–ฅํ›„ React์˜ ์ฃผ์š” ๋ฒ„์ „์—์„œ ์ œ๊ฑฐ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

React 18์—์„œ unmountComponentAtNode๋Š” root.unmount()๋กœ ๊ต์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

unmountComponentAtNode๋Š” DOM์— ๋งˆ์šดํŠธ๋œ React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

unmountComponentAtNode(domNode)

๋ ˆํผ๋Ÿฐ์Šค

unmountComponentAtNode(domNode)

unmountComponentAtNode๋ฅผ ํ˜ธ์ถœํ•ด์„œ DOM์— ๋งˆ์šดํŠธ๋œ React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ด€๋ จ๋œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์™€ state๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

import { unmountComponentAtNode } from 'react-dom';

const domNode = document.getElementById('root');
render(<App />, domNode);

unmountComponentAtNode(domNode);

์•„๋ž˜์—์„œ ๋” ๋งŽ์€ ์˜ˆ์‹œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๋งค๊ฐœ๋ณ€์ˆ˜

๋ฐ˜ํ™˜๊ฐ’

unmountComponentAtNode๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ ํ•ด์ œ๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


์‚ฌ์šฉ๋ฒ•

unmountComponentAtNode๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋ธŒ๋ผ์šฐ์ € DOM ๋…ธ๋“œ์—์„œ ๋งˆ์šดํŠธ๋œ React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ด€๋ จ๋œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์™€ state๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

import { render, unmountComponentAtNode } from 'react-dom';
import App from './App.js';

const rootNode = document.getElementById('root');
render(<App />, rootNode);

// ...
unmountComponentAtNode(rootNode);

DOM ์—˜๋ฆฌ๋จผํŠธ์—์„œ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ œ๊ฑฐํ•˜๊ธฐ

๋•Œ๋•Œ๋กœ ๊ธฐ์กด ํŽ˜์ด์ง€๋‚˜ ์ผ๋ถ€๋งŒ React๋กœ ์ž‘์„ฑ๋œ ํŽ˜์ด์ง€์—์„œ React๋ฅผ โ€œํฌํ•จโ€ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ Œ๋”๋ง ๋œ DOM ๋…ธ๋“œ์—์„œ UI์™€ state ๋ฐ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•ด์„œ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ โ€œ์ค‘์ง€โ€ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ˆ์‹œ์—์„œ๋Š” โ€œRender React Appโ€์„ ํด๋ฆญํ•˜๋ฉด React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. โ€œUnmount React Appโ€์„ ํด๋ฆญํ•˜๋ฉด React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

import './styles.css';
import { render, unmountComponentAtNode } from 'react-dom';
import App from './App.js';

const domNode = document.getElementById('root');

document.getElementById('render').addEventListener('click', () => {
  render(<App />, domNode);
});

document.getElementById('unmount').addEventListener('click', () => {
  unmountComponentAtNode(domNode);
});