Closed chaeeunj closed 10 months ago
@chaeeunj qs라는 라이브러리도 있으니 query-string은 해당 라이브러리로 관리해보시는 것도 추천드립니다 : ) 우선 이전 query-string을 유지시키기 위한 searchParams가 정상동작을 하지 않은 것 같군요.
또, 코드 중에 2중 if문이 있는데, 이 부분은 현업에서 지양하는 방법입니다.
switch문이나 객체 매핑을 추천드립니다.
const generateCategoryTitle = ({ postType, postOrder, postStatus }) => {
const prefix = postType === 'interest' ? '[관심주제] ' : '';
const titles = {
general: {
mostChatParticipants: '채팅 참여자가 많은 고민',
mostVotes: '투표 참여자가 많은 고민',
ongoing: {
latest: '아직 결정하지 못한 고민',
imminentDeadline: '결정 시간이 임박한 고민',
},
completed: {
latest: '결정이 완료된 고민',
},
},
};
let categoryTitle;
if (postStatus) {
categoryTitle = titles[postType][postStatus][postOrder];
} else {
categoryTitle = titles[postType][postOrder];
}
return prefix + (categoryTitle || '');
};
const categoryTitle = generateCategoryTitle({
postType, postOrder, postStatus
});
안그래도 조건문이 너무 복잡한 것 같아 줄이는 방법을 고민중이었는데 이렇게도 사용할 수 있네요...감사합니다🤗 qs 라이브러리도 서치해보겠습니다!!
지정된 카테고리에 해당하는 게시물을 전부 불러오는 PostCategory 코드에 페이지네이션을 적용하여 한 페이지 당 10개의 게시물을 보여주도록 했습니다.
첫 번째 페이지에서는 게시물이 잘 렌더링 되지만
두 번째 페이지 부터는 게시물과 타이틀이 렌더링되지 않고, 전체 페이지 수는 2 페이지 뿐인데 5번 페이지까지 렌더링되는 문제가 있습니다.
게시물을 렌더링해주는 PostCard 컴포넌트에서 props로 받은 데이터를 출력하게 한 다음 콘솔창을 확인해보니 데이터는 또 잘 받아오고 있는 상황...🙄
추가로 url 에도 문제가 있음을 확인했습니다.
첫 페이지에서는 해당 url로 연결되어있는데 'localhost/posts?postType=general&postStatus=ongoing&postOrder=latest&page=1'
두 번째 페이지로 이동하면 url이 아래와 같이 변경되며 postType, postStatus, postOrder 의 쿼리 값을 받아오지 못하는 것을 확인했습니다. 'localhost/posts?page=2'
페이지를 변경할 때 마다 이전의 쿼리 값을 가져오고 page 값만 갱신하여 데이터를 요청하도록 했는데, 두 번째 페이지의 url 에서 postType, postStatus, postOrder 의 쿼리 값을 받아오지 못하고 있기 때문에 스프레드 연산자를 사용하여 쿼리 값을 복사하지 않고 직접 명시하여 설정하도록 수정했습니다.
코드 수정 후 잘 동작하는 모습
위와 같이 쿼리 값을 직접 명시하여 페이지네이션이 잘 동작하지 않는 문제를 해결했지만, 아직 정확한 원인이 무엇인지 제대로 이해하지 못했습니다😣