React study/React JS로 영화 웹 서비스 만들기

[React] 1-3. React.js로 카운터 앱 만들기 (2)

카누가 좋아요 2023. 5. 23. 14:59

React JS로 버튼 클릭 횟수를 알려주는 앱 만들기(harder way)

이전 시간에 이어서


3. button 생성 후 화면에 렌더링하기

span 때랑 똑같이 진행하면 된다.

 

<script>
  . . . . . 
  // const 변수명 = React.createElement("html tag명", properties, content)
  const btn = React.createElement("button", null, "Click me");    

  // btn(button)을 root 안에 render 해달라고 요청 (span을 btn으로 수정)
  ReactDOM.render(btn, root);
</script>



4. span과 button을 모두 화면에 렌더링하기

 

<script>
  . . . . .
  // div를 생성하여 children으로 span과 btn을 차례로 넣음. (content 인자로 [span, btn] array를 넣어주었음.)
  const container = React.createElement("div", null, [span, btn]);

  // container(div)를 root 안에 render 해달라고 요청
  ReactDOM.render(container, root);
</script>

- 결과로 root DOM node(<div id="root"></div>)의 자식으로 span과 button이 차례로 들어간다.

* span의 html tag를 "h3"로 수정하면 글자와 버튼 사이 줄바꿈이 가능하다.



5. h3와 button에 event listener 주기 (property 수정)

 

<script>
  . . . . .
  const h3 = React.createElement(
      "h3", 
      { 
        onMouseEnter: () => console.log("mouse enter"),     // 주목!
      }, 
      "Hello, I'm a span.");

  const btn = React.createElement(
    "button", 
    {
      onClick: () => console.log("im clicked."),     // 주목!
      style: {
        backgroundColor: "tomato",
      },
    }, 
    "Click me"
  );
</script>

- h3의 property로 onMouseEnter를, btn의 property로 Onclick을 부여해 주었다.

- property에 이벤트명 앞에 on을 붙여 camelCase로 작성하면 event listener와 같은 효과를 낼 수 있다.

- onMouseEnter와 onClick 옆에 버튼 클릭 시 실행할 함수를 정의해 주었다.

- HTML 작성 시 id나 class를 부여하고, JS에서 querySelector 등을 이용해 HTML element를 가져오고, addEventListener를 이용해 이벤트를 부여하는 많은 과정을 위 코드를 통해 같은 효과를 낼 수 있다.

* onMouseEnter는 마우스 커서가 해당 tag 영역으로 들어올 시 함수를 실행시킨다.

 

 

오늘의 코드

 

<!--버튼을 몇 번 클릭했는지 세는 어플이다.-->
<!DOCTYPE html>
<html>
  <body>
    <div id="root"></div>
  </body>
  <!--아래 두 줄의 코드는 리액트를 실행시키는 코드이다. 작성하면 console창에 react라고 작성했을 때 결과를 불러올 수 있어야 한다.-->
  <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
  <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
  <script>
    const root = document.getElementById("root");
    const h3 = React.createElement(
      "h3", 
      { 
        onMouseEnter: () => console.log("mouse enter"), 
      }, 
      "Hello, I'm a span.");
    const btn = React.createElement(
      "button", 
      {
        onClick: () => console.log("im clicked."),
        style: {
          backgroundColor: "tomato",
        },
      }, 
      "Click me"
    );
    const container = React.createElement("div", null, [h3, btn]);
    ReactDOM.render(container, root);
  </script>
</html>

 

 

ReactJS로 영화 웹 서비스 만들기 – 노마드 코더 Nomad Coders

 

ReactJS로 영화 웹 서비스 만들기 – 노마드 코더 Nomad Coders

React for Beginners

nomadcoders.co