inflearn logo
강의

Khóa học

Chia sẻ kiến thức

React dành cho người mới bắt đầu: Xây dựng nền tảng vững chắc

2. Viết trình xử lý sự kiện

React 비기너: 튼튼한 기본 만들기 / 섹션 23. React Event / 2. 이벤트 핸들러 작성

97

작성자 없음

0 câu hỏi đã được viết

0

버튼 컴포넌트 onClick={handleClick()}
jsx 에서 위처럼 적으면 자바스크립트에서
엔진에서 즉시실행함수로 인식하는것 처럼
인식을 해서 렌더링이 되기도전에
함수를 먼저 실행해버리는 현상이 생기는 이유가 맞을까요?

결국 핸들러 함수의 기능도 하지못하고
1회용으로 즉시실행되고 소멸해버리는 함수가 되어버리는 것 같아보이는데
이에 대한 정확한 설명이 있을까요?
제가 생각한 이 부분에 보충적으로 필요한 설명을 혹시 해주실 수 있으실까요?

javascript react 객체지향 dom

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 지금중님.

React에서 이벤트 핸들러를 설정할 때 onClick={handleClick()}와 같은 형식으로 작성하시면, handleClick 함수가 즉시 실행되어 그 반환값이 이벤트 핸들러로 설정되는 문제가 발생합니다. 이렇게 되면 컴포넌트가 렌더링될 때마다 함수가 실행되고, 의도한 대로 버튼을 클릭했을 때가 아니라 렌더링 시점에 바로 한 번 실행되게 되어버립니다.

이 문제를 해결하기 위해서는 함수의 참조를 전달해야 합니다. 아래와 같이 작성해야 정상적으로 작동됩니다:

<button onClick={handleClick}>
  버튼
</button>

위처럼 handleClick을 함수 호출 없이 이름만 전달하면, 버튼 클릭 시점에만 함수가 호출되게 됩니다. React에서는 이 방식으로 이벤트 핸들러를 설정하는 것이 일반적입니다.

관련 질문 및 추가 설명

  • onClick={handleClick}: 함수의 참조를 전달하여 클릭 시 함수가 호출됩니다.
  • onClick={() => handleClick()}: 새로운 익명 함수를 만들어 클릭 시 해당 함수가 호출되어 그 안에서 handleClick이 실행됩니다. 이 방법은 때때로 매개변수를 전달할 필요가 있을 때 유용합니다. 하지만 주의할 점은, 리렌더링마다 새로운 함수가 생성되기 때문에 과도한 사용은 성능에 영향을 줄 수 있습니다.

이로 인해 발생할 수 있는 여러 상황과 핸들링 방법에 대한 예제를 살펴보실 수 있는 게시물을 추천드립니다. 다음 링크를 참고해 보시기 바랍니다:


저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

명시적 타입 선언(콜론 타입 선언)과 as 타입 단언 차이

0

5

1

max x5 플랜을 결제했습니다.

0

8

1

클로드 초기 설정

0

8

1

사용자 스코프 설정 파일 적용 문제

0

8

1

클로드코드 유료플랜 할인 방법이 있을까요?

0

22

0

싱글턴패턴

0

8

1

API Error : 400 에러의 원인과 해결방법이 궁금합니다!!

0

16

2

퍼미션 권한 설정 문의

0

19

2

커서에서 shift+enter가 안됩니다.

0

20

2

mcp 설치를 못하겠어요

0

35

2

라이브러리 관련 질문 있습니다!

0

26

2

output-styles은 Claude Code의 공식 기능이 아니라고 하는데 혹시 변경된걸까요?

0

26

2

클로드 변경

0

26

2

/config 에서 output-style 을 변경

0

24

1

한국어 문제

0

28

2

Singleton 관련 질문입니다.

1

31

2

3강 질문

0

18

1

Node.js 관련 질문드립니다.

0

29

3

클로드 버전업 설치

0

26

2

쿠폰 문의 드립니다.

0

20

2

13강 프로젝트 생성 Next.js 설치이슈

0

25

3

html이 어플레이케이션 중심으로 전환되었다는 뜻이 정확히 이해가 가지 않아 질문드립니다.

0

61

0

React 비기너: 튼튼한 기본 만들기 / 섹션22. 이벤트 핸들러 강의 / Content Attribute와 IDL Attribute 사용 방식에 대한 질문드립니다

0

73

1

React 비기너: 튼튼한 기본 만들기 / 섹션22. 이벤트 핸들러 / 3. 이벤트 핸들러: 콘텐트 속성 7:00

0

75

1