Skip to content

Commit

Permalink
refactor: useQueryParam option추가로 함수 오버로드 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
dooohun committed May 20, 2024
1 parent 2bbae93 commit fecf855
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/component/YearPagination/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { ArrowBackIosNewOutlined, ArrowForwardIosOutlined } from '@mui/icons-mat
import { Button } from '@mui/material';
import { useNavigate } from 'react-router-dom';
import { LAST_DUES_YEAR } from 'util/constants/status';
import useQueryParam from 'util/hooks/useQueryParam';
import { useQueryParam } from 'util/hooks/useQueryParam';
import * as S from './style';

interface YearPaginationProps {
Expand Down
2 changes: 1 addition & 1 deletion src/layout/TopBar/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { useLocation, useNavigate } from 'react-router-dom';
import { useLoginState } from 'store/loginStore';
import { Button } from '@mui/material';
import MenuIcon from '@mui/icons-material/Menu';
import useQueryParam from 'util/hooks/useQueryParam';
import { useQueryParam } from 'util/hooks/useQueryParam';
import { PATHS } from 'util/constants/path';
import { useEffect } from 'react';
import { useGetMe } from 'query/members';
Expand Down
2 changes: 1 addition & 1 deletion src/page/DuesManagement/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import LoadingSpinner from 'layout/LoadingSpinner';
import {
ArrowDownward, ArrowUpward, Sort,
} from '@mui/icons-material';
import useQueryParam from 'util/hooks/useQueryParam';
import { useQueryParam } from 'util/hooks/useQueryParam';
import makeNumberArray from 'util/hooks/makeNumberArray';
import { useGetMembers } from 'query/members';
import { useSnackBar } from 'ts/useSnackBar';
Expand Down
2 changes: 1 addition & 1 deletion src/page/EditDues/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import LoadingSpinner from 'layout/LoadingSpinner';
import {
ArrowDownward, ArrowUpward, Sort,
} from '@mui/icons-material';
import useQueryParam from 'util/hooks/useQueryParam';
import { useQueryParam } from 'util/hooks/useQueryParam';
import { useSnackBar } from 'ts/useSnackBar';
import makeNumberArray from 'util/hooks/makeNumberArray';
import { NewDuesData } from 'api/dues';
Expand Down
2 changes: 1 addition & 1 deletion src/page/PersonalDues/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// 보여줘야 하는 정보
// unpaidCount, 각 미납 내역들
import { useEffect, useState } from 'react';
import useQueryParam from 'util/hooks/useQueryParam';
import { useQueryParam } from 'util/hooks/useQueryParam';
import YearPagination from 'component/YearPagination';
import { useGetAllDues } from 'query/dues';
import { useGetMe } from 'query/members';
Expand Down
18 changes: 17 additions & 1 deletion src/util/hooks/useQueryParam.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,26 @@
/* eslint-disable react-hooks/exhaustive-deps */
import { useLocation } from 'react-router-dom';

export default function useQueryParam(name: string) {
interface Options<T> {
parser?: (val: string) => T;
required?: boolean;
}

export function useQueryParam<T = string>(name: string): T | undefined;
export function useQueryParam<T = string>(name: string, options: Options<T> & { required: true }): T;
export function useQueryParam<T = string>(name: string, options: Options<T>): T | undefined;
export function useQueryParam<T = string>(name: string, options?: Options<T>) {
const location = useLocation();
const searchParams = new URLSearchParams(location.search);
const value = searchParams.get(name) as string | undefined;

if (options?.required && value == null) {
throw new Error(`${name} is required`);
}

if (options?.parser != null && value != null) {
return options.parser(value);
}

return value;
}

0 comments on commit fecf855

Please sign in to comment.