[Salesforce] LWC에서 사용하는 어노테이션 완전 정복

molamola·2025년 4월 24일

Salesforce

목록 보기
8/10

Lightning Web Components(LWC)에서는 JavaScript 상단에서 사용하는 특수한 어노테이션들을 데코레이터(Decorator)라고 부릅니다.
이 데코레이터들은 Salesforce 플랫폼과의 연동, 데이터 바인딩, 컴포넌트 통신 등에 중요한 역할을 합니다.

이 글에서는 LWC에서 사용 가능한 모든 데코레이터를 깔끔하게 정리했습니다.


✅ 1. @api

항목설명
역할공개 속성(Public Property) 또는 메서드로 외부 컴포넌트(LWC, Aura)에서 접근 가능하게 만듦
주 사용 위치부모 → 자식 컴포넌트 간 데이터 전달
사용 대상변수, 메서드
예시 용도부모가 자식 컴포넌트에 데이터를 전달하거나 메서드를 직접 호출할 때 사용

✅ 2. @track (⚠️ Deprecated)

항목설명
역할컴포넌트 내에서 반응형 상태 추적(리액티브) 을 위해 사용되던 속성
현재 상태⚠️ 최신 버전에서는 대부분 자동 추적됨. 객체/배열의 일부 요소만 업데이트할 경우에만 필요
사용 대상변수

✅ 3. @wire

항목설명
역할Apex, Lightning Data Service, Platform Resource 등에서 데이터를 자동으로 가져오는 바인딩 방식
특징자동 호출 + 자동 반응형 처리
사용 대상Apex 메서드, LDS 객체, Schema 등
예시 용도Apex에서 @AuraEnabled(cacheable=true) 메서드를 가져와 LWC에 자동 연결

✅ 4. @readonly (내부용, 공식 지원 X)

항목설명
상태과거 일부 컴포넌트 라이브러리 내부에서만 사용되던 비공식 데코레이터
일반 개발자 사용 여부❌ 지원되지 않으며 일반적으로 사용할 필요 없음

✅ 5. @track vs 일반 변수 (비교)

속성설명
일반 변수LWC는 대부분의 변수 변경을 자동 감지함
@track배열/객체의 일부 속성 변경을 감지시키고 싶을 때 수동으로 지정
예외 케이스this.data.name = 'abc' 처럼 객체의 내부만 변경하는 경우 @track 필요할 수 있음 (구버전 기준)

⚠️ 사용 시 주의사항

데코레이터주의사항
@api부모가 접근하는 속성/메서드는 꼭 @api로 선언되어야 함
@wire사용하려는 Apex 메서드는 반드시 @AuraEnabled(cacheable=true) 설정 필요
@trackLWC의 최신 버전에서는 대부분의 상태 추적이 자동화됨 → 특별한 경우에만 사용

✅ 요약 표

데코레이터역할대상비고
@api외부 접근 가능 속성/메서드변수, 메서드부모 → 자식 통신
@wire데이터 바인딩 (Apex, LDS)변수, 메서드자동 호출 + 자동 반응형
@track객체/배열 내부 속성 추적변수최신 버전에서는 거의 불필요
(비공식) @readonly내부용변수사용 비권장, 공식 미지원

✨ 마무리

LWC는 React나 Vue처럼 반응형 프론트엔드 개발을 가능하게 해주는 컴포넌트 기반 프레임워크입니다.
여기서 사용하는 데코레이터들은 Salesforce의 서버(Apex), UI, 컴포넌트 간 통신을 부드럽게 연결해주는 핵심 역할을 합니다.

정확한 의미와 사용 목적을 이해하면, 더 유연하고 강력한 LWC 컴포넌트를 만들 수 있습니다.

0개의 댓글