인프런 커뮤니티 질문&답변

roberto park님의 프로필 이미지
roberto park

작성한 질문수

GraphQL 완전정복 (키오스크를 만들며 배우는 풀스택 과정) - [2024 부분 리뉴얼]

categoryForm - 추가, 삭제

왜 전달인자가 있을때 화살표 함수를 쓰는게 더좋을까요.?

해결된 질문

작성

·

227

·

수정됨

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

전달인자가 있을때 화살표 함수를 쓰는게 더좋을까요.?

Props 전달시 아래두개 차이는 무엇일까요?

{함수명}

{() => 함수명() }

답변 1

1

Indie Coder님의 프로필 이미지
Indie Coder
지식공유자

props전달시보다는 메소드 실행을 예로 설명드리는 것이 좋을 것 같습니다.

다음과 같은 샘플 코드가 있다고 가정하겠습니다.

반복 블록을 이용해 lists 만큼 버튼이 생성되고

각각의 값을 할당받는 목록이 있다고 했을 때

handleClick 메소드를 화살표 함수 형태로 실행하면

일반적으로 원하는 결과 즉 클릭 했을 때 이벤트가 발생하고 하나의 값이 alert에 나타나게 됩니다 .


<script>
  let lists = [1,2,3,4,5]
	
  function handleClick(v) {
    alert(`value = ${v}`)
  }
</script>

{#each lists as value }
  <button class="btn" on:click={() => handleClick(value)}>
    Click me {value}
  </button>
{/each}

<style>
.btn {
  display: block;
}
</style>

하지만 다음과 같이 그냥 일반 함수 호출로 하고 실행시켜 보면

그냥 앱이 실행될 때 handleClick 이벤트가 호출되게 됩니다.

<script>
  let lists = [1,2,3,4,5]
	
  function handleClick(v) {
    alert(`value = ${v}`)
  }
</script>

{#each lists as value }
  <button class="btn" on:click={handleClick(value)}>
    Click me {value}
  </button>
{/each}

<style>
.btn {
  display: block;
}
</style>

따라서 이 두가지 케이스는 용도가 다릅니다.

화살표 함수를 이용할 경우에는 사용자가 어떤 이벤트를 실행시킬 때 전달인자를 넘겨서 실행시키는 경우에 사용하게 됩니다.

그리고 해당 컴포넌트가 실행될 때 마크업 영역에서 어떤 값과 함께 계산되어 출력되어야 한다면 화살표 함수가 아닌 일반 함수 호출로 작성해야 하는 것입니다.

 

그리고 전달인자가 없을 때에는 그냥 함수명만 {함수명} 이런식으로 호출하면 된다는 것도 기억하시면 좋겠습니다.

 

 

 

roberto park님의 프로필 이미지
roberto park
질문자

감사합니당!

Indie Coder님의 프로필 이미지
Indie Coder
지식공유자

도움이 되셨다니 다행입니다. 혹시 괜찮으시면 나중에 수강평 부탁드릴게요 ㅎ

roberto park님의 프로필 이미지
roberto park

작성한 질문수

질문하기