반응형
Object를 URL 파라미터로 변환하기
아래와 같은 검색용 Interface를 만들었다고 가정하자.
interface RoadmapSearch {
client?: number;
title?: string;
official?: boolean;
order?: TRoadmapOrder;
page: number;
}
URLSearchParams를 사용하면 RoadmapSearch 타입의 Object를 URL 파라미터 문자열로 바꿀 수 있다.
const query: RoadmapSearch = {
client: 1,
title: test,
official: true,
order: RoadmapOrder.LATEST,
page: 1,
};
const param = new URLSearchParams(query);
console.log(param.toString());
// 결과
client=1&title=test&official=true&order=LATEST&page=1
하지만 아래와 같이 검색 조건 중 일부만 사용하면, 조건이 정해지지 않은 파라미터들은 다 undefined가 들어가버린다.
const query: RoadmapSearch = {
title: test,
page: 1,
};
const param = new URLSearchParams(query);
console.log(param.toString());
// 결과
client=undefined&title=test&official=undefined&order=undefined&page=1
이럴 때 아래와 같은 유틸 함수를 작성해 undefined인 파라미터는 반영되지 않도록 할 수 있다.
const objectToParams = (o: Object): URLSearchParams => {
const searchParams = new URLSearchParams();
Object.entries(o).forEach(([k, v]) => {
if (v !== undefined) searchParams.append(k, v.toString());
});
return searchParams;
};
const query: RoadmapSearch = {
title: test,
page: 1,
};
const param = objectToParams(query);
console.log(param.toString());
// 결과
title=test&page=1
반응형
'Tips > Front end' 카테고리의 다른 글
[NPM] npm build 이후 serve 시 PSSecurityException 뜰 때 (0) | 2022.12.02 |
---|---|
[ESLint] Delete`CR` 에러 폭탄 해결하기 (End of Line 일괄 변경, 기본값 설정하기) (0) | 2022.10.30 |
[Front-End] Prettier 단축키 (0) | 2022.01.27 |
[CSS] 애니메이션이 떨릴 때 (will-changed) (0) | 2022.01.12 |
[Javascript] 밤하늘의 별 이펙트 만들기 (0) | 2021.06.04 |