오류코드
import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
export const useData365MastStore = defineStore('data365Master', () => {
const data365Master = ref({});
const getData365Master = (prdcd) => {
return computed(() => data365Master.value);
};
return {
data365Master,
getData365Master
};
});
개선코드
import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
export const useData365MastStore = defineStore('data365Master', () => {
const data365Master = ref({});
// 단일 computed 속성으로 모든 데이터를 관리
//const data365MasterComputed = computed(() => data365Master.value);
// 개선된 getData365Master 함수
const getData365Master = (prdcd) => {
//return data365MasterComputed.value[prdcd];
return data365Master.value[prdcd];
};
return {
data365Master,
getData365Master
};
});
개선 사항 설명
- 단일 computed 속성 사용:
- data365MasterComputed라는 단일 computed 속성을 사용하여 전체 데이터 객체를 관리합니다. 이는 매 호출마다 새로운 computed 속성을 생성하지 않도록 합니다.
- 효율적인 데이터 접근:
- getData365Master 함수는 이제 단순히 data365MasterComputed에서 필요한 데이터를 반환합니다. 이는 메모리 사용을 최적화하고 성능을 향상시킵니다.
추가 고려사항
- 캐싱:
- 자주 접근하는 데이터에 대해 캐싱을 적용하여 성능을 더욱 향상시킬 수 있습니다. 예를 들어, Map 객체를 사용하여 캐싱할 수 있습니다.
- 반응성 유지:
- data365MasterComputed는 여전히 반응형이므로, data365Master가 변경될 때 자동으로 업데이트됩니다.
- 성능 모니터링:
- 개발자 도구를 사용하여 성능을 모니터링하고, 필요에 따라 추가적인 최적화를 적용합니다.
이러한 개선을 통해 getData365Master 메소드가 1초마다 100번씩 실행되더라도 메모리 누수 없이 효율적으로 동작할 수 있습니다.
'프로그래밍 > Js' 카테고리의 다른 글
이기종간 데이터 변환(한글) 전문에 한글 전송 방법 (0) | 2024.08.22 |
---|---|
vue3 부모->자식 자식->부모 데이터 전달방법 (0) | 2024.08.12 |
Vue 3에서 mitt를 사용하여 이벤트 핸들러 중복 실행 방지하기 (0) | 2024.06.13 |
[vue3] Vue3 프로젝트에서 웹과 모바일 연동 문제 해결 emitter 문제 (0) | 2024.05.29 |
앱에서 input 클릭시 뷰포트 안으로 들어오게 하는 방법 (0) | 2024.05.08 |