usePagination - composition api (vue2)
2022-08-19
이슈 1. 반복 코드 리팩토링
Pagination 컴포넌트를 사용하는 곳에서 공통으로 반복해서 사용하는 코드를 composition api 를 사용하여 개선해보았습니다.
기존 공통 코드
export default Vue.extend({
data: () => ({
pageOptions: {
page: 1,
size: 10,
totalElements: 0,
totalPages: 0,
first: false,
last: false,
},
}),
...
methods: {
async getNotice() {
try {
const response = await notice_api.getNotice(config);
if (response.status === 200) {
const data = response.data.items;
this.pageOptions = {
page: this.pageOptions.page,
size: data.size,
totalElements: data.totalElements,
totalPages: data.totalPages,
first: data.first,
last: data.last,
};
개선 코드
hooks/usePagination.ts
공통으로 사용할 data와 function을 관리
사용 예
한번에 보여줄 리스트 갯수(size) 조절시 예
이슈 2. typescript: property does not exist on type 'object & record<never, any>
setup() 에서 return한 데이터를
<template>코드 내에서 사용시 기능은 모두 동작하였으나, 위와 같은 빨간줄 typescript 경고가 생겼습니다.테스트해보니 chrome vue extention 에서도 data로 잘 들어오고 있고, build 에러도 뜨지 않았지만, 찾아보니 아래와 같이 수정을 하면 typescript 경고가 발생하지 않았습니다.
참고 자료
Vue 3로 마이그레이션하기 위해 준비해야 할 것: https://ui.toast.com/weekly-pick/ko_20200804
해결 코드
Pagination 2개 이상 사용시 코드 비교
composition api 사용 전
composition api 사용 후
이렇게 코드의 재사용성을 높여 반복 코드를 줄일 수 있습니다.
Last updated
Was this helpful?