본문 바로가기
SPA/React

vanilla.js vs react.js

by memeseo 2022. 10. 19.

1. vanilla vs react

: 버튼을 클릭하면 숫자가 증가되는 간단한 이벤트 구현

 

(1) vanilla

<!DOCTYPE html>
<html>
    <body>
        <span>Total Clicks : 0 </span>
        <button id="btn">Click Me</button>
    </body>
    
    <script>
        let counter = 0;
        const button = document.getElementById('btn');
        const span = document.querySelector('span');
        function handleClick(){
            counter = counter + 1;
            span.innerText = `Total Clicks : ${counter}`;
        }

        button.addEventListener("click", handleClick);
    </script>
</html>

 

*이벤트 등록하기 위한 과정 : 4단계

- 태그 작성

- 태그 아이디 부여

- script로 아이디 불러와 변수에 저장

- 변수에 이벤트 리스너 추가

 

 

(2) react

<!DOCTYPE html>
<html>
    <body>
        <div id="root"></div>
    </body>
    <script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
    <script>
        const root = document.getElementById("root");
        const title = React.createElement(
            "h3",
            {
                id : "title",
                onMouseEnter : () => console.log('mouse enter')
            },
            "im h3"
        )

        const button = React.createElement(
            "button",
            {
                onClick : () => console.log('im clicked'),
                style : {backgroundColor : "tomato"}
            },
            "Click me"
        )

        const container = React.createElement("div", null, [title, button]);
        ReactDOM.render(container, root)
    </script>
</html>

 

*이벤트 등록하기 위한 과정

- react.js로 엘리먼트 생성 후 태그 명, 이벤트 (각종 props 정의 가능), innerText입력

- react dom으로 html 업데이트

 

=> vanilla.js와 비교했을 때 코드가 굉장히 간결해지고 가독성이 높아짐.

 

(3) 차이점

vanilla는 HTML를 먼저 만들고 그걸 Javascript로 가져와서 HTML을 업데이트.

react는 Javascript가 먼저 시작 되고 HTML이 업데이트 됨. 이게 React.js의 핵심.

 

* Javascript > create element > update html

'SPA > React' 카테고리의 다른 글

React Router  (0) 2022.11.21
React Effect Hook  (0) 2022.11.07
React Props 그리고 vue에는 없는 신기한 함수  (0) 2022.11.01
React State  (0) 2022.10.26
JSX 문법  (0) 2022.10.19