728x90
반응형
1. @AuraEnabled
- ApexClass의 method를 Component에서 호출가능하게 해준다.
2. (cacheable = true)
- 메서드 결과를 cache에 저장(?)한다.
- 동일한 레코드에 대한 다수의 요청이 있을 때 서버에 다시 쿼리를 보내지 않고 캐시된 결과를 사용할 수 있다.
이렇게 서버 캐싱을 활용하면 네트워크 비용을 최소화하고 더 나은 성능을 얻을 수 있다
3. TMI
import { LightningElement , wire} from 'lwc';
import findAccList from '@salesforce/apex/AccController.findAccList';
export default class BindImperativewithParam extends LightningElement {
searchKey = '';
accounts;
error;
handleOnchange(event){
this.searchKey = event.target.value;
}
handleClick(){
findAccList({keyword:this.searchKey})
.then((result) =>{
this.accounts = result;
this.error = undefined;
})
.catch((error)=>{
this.error = error;
this.accounts = undefined;
});
}
// @wire(findAccList,{keyword : '$searchKey'})
// wiredAccList({data,error}){
// if(data){
// this.accounts = data;
// this.error = undefined;
// } else if(error){
// this.accounts = undefined;
// this.error = error;
// }
// }
}
- then과catch를 사용하는 imperative call(명령형 호출)의 경우에는 findAccList Method를 사용할때
catchable = true가 필요하지않지만,
@wire를 사용하는 function 방식에는 catchable = true가 되어있지않으면 오류가 발생한다.
@AuraEnabled(cacheable=true)를 사용한 Apex 메서드와 LWC의 연결 메서드는 실제로 괜찮습니다.
Wire 어댑터는 브라우저 캐시를 사용하여 @wire에서 오는 레코드 데이터를 저장하기 때문입니다. 기본적으로 @AuraEnabled는 @AuraEnabled(cacheable=false)입니다. 이는 서버 측 메서드(apex 메서드)가 유선 어댑터로 호출될 수 없음을 의미하므로 LWC는 이 오류로 인해 apex 메서드 실행을 거부했습니다.
그러나 @AuraEnabled(cacheable=true) 없이 apex 메서드에 대한 명령형 호출이 가능합니다.
명령형 호출은 수신된 데이터를 저장하기 위해 브라우저 캐시를 사용하지 않습니다.
728x90
반응형
'Salesforce' 카테고리의 다른 글
Salesforce LWC notification(alert,confirm,prompt) (0) | 2023.12.04 |
---|---|
Salesforce LWC iterator(반복자) , for:each (2) | 2023.12.04 |
Salesforce LWC Use Components in Salesforce Targets (meta.xml , Flow , ScreenAction ,headerlessAction) (0) | 2023.11.30 |
Salesforce LWC Wire Adapters & Functions (0) | 2023.11.30 |
Salesforce LWC and AURA Coexistence(공존) (2) | 2023.11.29 |