[React] 리액트 컴포넌트의 이벤트 핸들러

2024. 7. 20. 00:26・기초학습

함수 컴포넌트가 어떤 순서로 업데이트 되는지(재렌더링 되는지) 보면

import { useState } from 'react';

function MyButton() {
  const [count, setCount] = useState(0);
  
  function handleClick() {
    setCount(count + 1);
  }
  
  return (
  	<button onClick={handleClick}>
    	Clicked {count} times
    </button>
   );
}

 

  1. count = 0 인 상태로 버튼이 보이고,
  2. 버튼을 클릭했을 때 handleClick 함수를 호출하면, 
  3. setCount함수에 count + 1을 넘겨주며 실행
  4. 이때, 리액트는 업데이트 해야 하는 것을 알아차리고 다시 렌더링 한다.
  5. setCount함수에 count + 1을 넘겨주며, 실행되는 과정에서 클로저(외부 스코프의 값을 기억)로 인해 외부 스코프에 있는 count 값인 0을 참조하고 거기에 1을 더한다.
  6. 다시 return 코드로 넘어가서 Clicked 1(count값이 업데이트 되어 보여짐) times 버튼이 보이고, 
  7. 한번 더 클릭하면 다시 handleClick가 호출되고, handleClick의 setCount(count+1)가 실행된다.
저작자표시 비영리 (새창열림)

'기초학습' 카테고리의 다른 글

[React] 컴포넌트(Component)란?  (0) 2024.07.21
[React] JSX의 이스케이프 백(escape back)  (0) 2024.07.20
[Network] URL  (0) 2024.07.18
[React] React Hook: useState()  (2) 2024.07.18
[React] 리액트를 쓰는 이유  (0) 2024.07.17
'기초학습' 카테고리의 다른 글
  • [React] 컴포넌트(Component)란?
  • [React] JSX의 이스케이프 백(escape back)
  • [Network] URL
  • [React] React Hook: useState()
dev.hyejin
dev.hyejin
  • dev.hyejin
    혜진의 개발자 성장블로그
    dev.hyejin
  • 전체
    오늘
    어제
    • 분류 전체보기 (89)
      • 2024 데브캠프 (2)
      • 회고 (1)
      • 이슈해결 (3)
      • 기초학습 (13)
      • Frontend (20)
        • JavaScript (3)
        • Git, GitHub (3)
        • HTML, CSS (14)
      • Backend (8)
        • Database (4)
        • Java (4)
      • CS (16)
        • Network (10)
        • Algorithm (6)
      • Eng (16)
      • Tips (5)
  • 인기 글

  • 태그

    상대경로
    border-box
    런타임
    GitHub
    절대경로
    점근성능
    시간복잡도
    box-sizing
    ER모델
    객체
  • hELLO· Designed By정상우.v4.10.3
dev.hyejin
[React] 리액트 컴포넌트의 이벤트 핸들러
상단으로

티스토리툴바