웹/React

[React] React와 기존 방식 차이점 - DOM 조작 vs 가상 DOM

leebaek 2025. 3. 15. 23:29

 

vanilaJS에선 document.createElement()를 사용해 직접 DOM을 조작해야 합니다.

 

반면, React는 가상 DOM을 이용해 더 효율적으로 UI를 렌더링할 수 있고, 추가로 JSX를 사용하면 코드를 더욱 직관적이고 가독성 좋게 작성할 수 있습니다. !

 

이번 포스팅에서는 동일한 버튼을 만들면서, Vanilla JS → React → JSX로 발전하는 과정을 비교해보겠습니다! 🧐


✔️ 기존 방식

1. document.createElement() 사용해 DOM을 직접 생성한다.

2. 기존 DOM 요소의 ID를 가져와서, 해당 요소에 새로운 요소를 추가한다.

 

 ❌ DOM 변경 시 직접 조작해야 해서 비효율적

const btn = document.createElement("button");

btn.textContent = "Click me!";
btn.addEventListener("click", () => {
  console.log("Good!");
});

document.getElementById("root").appendChild(btn);

 


✔️ React 방식

1. 기존 DOM 요소를 ID로 찾아 React의 root로 설정한다.

2. 직접 DOM을 생성하지 않고, 가상 DOM을 비교하여 업데이트한다.

 

✔️ React가 DOM을 효율적으로 업데이트
코드가 길고 가독성이 떨어짐

const element = React.createElement(
      "button",
      { onClick: ()=>  console.log("Good!"); },
      "Click me!"
    )
  );

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(element);

 


✔️ React JSX 방식

→ 🔥 코드가 짧고, 가독성이 좋으며, 유지보수가 쉽다.

function App() {
  return <button onClick={() => console.log("Good!")}>Click me!</button>;
}

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<App />);