문제 발생
페이지네이션 컴포넌트를 만들면서 url 쿼리 스트링을 통해 페이징을 하였다.
처음 만들 때는 생각없이 '?' 를 붙여서 쿼리 스트링을 추가해주었지만 여러개의 쿼리 스트링을 쓸 때 문제가 생겼다.
쿼리 스트링이 없을 때와 기존에 쿼리 스트링이 1개 이상 있을 때 붙여줄 부호가 달랐다.
// 쿼리 스트링이 없을 때 -> '?'로 연결
/path?page=1
// 쿼리 스트링이 있을 때 -> '&'로 연결
/path?keyword=hi&page=1
문제 해결
URL 쿼리 스트링을 포매팅 해주는 유틸 함수를 만들어서 해결했다.
유틸함수는 사용하는 쿼리 스트링들을 객체 형식으로 key: value 값으로 받아서 쿼리 스트링으로 포매팅 한다.
이렇게 만들어진 쿼리 스트링을 기존 path에 '?'로 연결하면 되게끔 만들어뒀다.
objectToQueryString.ts
export default function objectToQueryString(obj: {
[key: string]: any;
}): string {
return Object.entries(obj)
.map(
([key, value]) =>
`${encodeURIComponent(key)}=${encodeURIComponent(value)}`,
)
.join("&");
}
'프론트엔드 > 트러블 슈팅' 카테고리의 다른 글
Next.js에서 페이지 별로 컴포넌트를 관리할 때 문제점 (0) | 2024.03.16 |
---|---|
axios 에러 핸들링 with TypeScript (0) | 2024.03.15 |
Failed to load plugin 'prettier' declared in '.eslintrc.cjs': Cannot find module 'eslint-plugin-prettier' (0) | 2024.01.12 |
'react-scripts'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다. (0) | 2023.12.29 |
자식 컴포넌트에서 부모 컴포넌트의 비동기 데이터 사용 시 렌더링 할 수 없는 현상 (0) | 2023.12.28 |