개발

[Salesforce] LWC Refresh (LWC 컴포넌트 새로 고치기)

juliea 2022. 11. 20. 23:14
728x90

 

1. 자바스크립트 단에서 reload -> 실패

window.location.reload();

구냥 먹히질 않았다

 

2. 어노테이션 걍 붙여넣기 ->  실패

@Track @wire 등 을 사용하였으나 결국 무한 반복 및 각종 에러등으로 우선 무작정 복붙은 옳지 않구나..

 

해결

3. 데이터 자체가 새로고침 될 수 있도록 껍데(this.refreshData)를 넣어줬다

this.refreshData -> 전역변수로 선언하지 않고 그냥.. 펑션 안에서만 실행되도록 지역변수처럼 사용하면 된다는걸 구글링하다 찾아서 어디서 봤었지 다시 출처를 찾아보니까 

 

저장 실행 -> refresh() 실행 -> getTargetRecord가 실행 (아마도 @track, @Wire 어노테이션이 되어 있어 해당 레코드가 저장 후 변경된 내용이 있으므로 새롭게 불러와지는게 아닐까.. 하는 추측...

 

[수정 후 결과물]

import { refreshApex } from '@salesforce/apex';
import { LightningElement, api, track, wire } from 'lwc';
import { getRecord } from 'lightning/uiRecordApi';

const FIELDS = [];

@api recordId;
@track record;

@wire(getRecord, { recordId: '$recordId', fields: FIELDS })
    getTargetRecord(result) {
    	this.refreshData = result;
       // Result 이후 생략
}

refresh(){ // 모든거 종료 후 리프레쉬
    return refreshApex(this.refreshData);
}

 

728x90