ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React #0 바닐라 JS 의 단점과 구조 살펴보기
    프론트/React 2024. 7. 30. 20:37

    HTML, CSS, JS 로 간단한 카운터 웹 페이지를 구현할때에는 HTML 에서는 span과 button 태그로 생성한 후 두개의 요소를 자바스크립트에서 찾고, 해당 요소에 이벤트를 걸어 감지될때마다 카운트 변수를 업데이트하고 다시 그려내는 작업을 해야했다.

    <!DOCTYPE html>
    <html lang="en">
        <!-- 1. html 로 텍스트와 버튼을 생성 -->
        <body>
            <span>Total clicks : 0</span>
            <button id="btn">Click me</button>
        </body>
        <script>
            // 2. 자바스크립트로 문서에서 요소 찾기
            const button = document.getElementById('btn');
            const span = document.querySelector('span');
            
            let counter = 0;
    
            // 3. 버튼 요소에 이벤트 걸어두기
            button.addEventListener('mouseenter', function () {
               // 4. 이벤트 감지
               counter = counter + 1
               span.innerText = `Total clicks : ${counter}`;
            });
        </script>
    
    </html>

    여기서 생각해볼 수 있는 단점으로는 첫번째로 코드가 HTML 태그, JS 코드으로 따로 나누어져 있어 가독성이 최악이다.

     

    <button id="btn">Click me</button>
    
    const button = document.getElementById('btn');

    두번째로는 이벤트를 걸어줄때에 반드시 태그에 id 나 class 를 붙여서 요소를 찾아야하고 나중에 실제로 개발할때에는 이름 붙여주고 그 이름을 기억한 후 다시 이벤트를 거는 작업이 굉장히 귀찮다.

     

    세번째는 다시 렌더링하는 작업이 비효율적이라는것이다. 지금은 innerHTML 만 다시 렌더링하는것이지만 바닐라 js 에서는 크게는 요소 하나 많게는 div 태그의 하위 모든 요소들을 바꾸는 경우가 많다.

     

    리액트에서는 이러한 단점을 개선하고 상호작용할 수 있는 태그들을 지원한다. 

     

Designed by Tistory.