Skip to content

Commit aa9d356

Browse files
committed
feat: 전체 라우팅 useRoute 커스텀 훅으로 변경
1 parent faef82b commit aa9d356

File tree

14 files changed

+74
-54
lines changed

14 files changed

+74
-54
lines changed

src/components/Home/Home.tsx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
1-
import { useNavigate } from "react-router-dom";
2-
31
import styles from "@/components/Home/Home.module.scss";
42
import IconButton from "@/components/ui/IconButton/IconButton";
53
import Text from "@/components/ui/Text/Text";
64

7-
import { PATH } from "@/constants/path";
5+
import { useRoute } from "@/hooks/common/useRoute";
86

97
const Home = () => {
10-
const navigate = useNavigate();
11-
12-
const handleCameraButtonClick = () => {
13-
navigate(PATH.RECEIPT_EDIT);
14-
};
8+
// 이후 네이티브 라우팅으로 변경
9+
const { navigateToReceiptEdit, navigateToRecognitionFail } = useRoute();
1510

1611
return (
1712
<div className={styles.Home}>
@@ -27,8 +22,8 @@ const Home = () => {
2722
<img src="/assets/img/img-graphic-logo.png" alt="mainLogo" />
2823
</div>
2924
<div className={styles.HomeBottom}>
30-
<IconButton text="갤러리" iconName="gallery" />
31-
<IconButton text="카메라" iconName="camera" onClick={handleCameraButtonClick} />
25+
<IconButton text="갤러리" iconName="gallery" onClick={navigateToRecognitionFail} />
26+
<IconButton text="카메라" iconName="camera" onClick={navigateToReceiptEdit} />
3227
</div>
3328
</div>
3429
);

src/components/HomeNavigateConfirmModal/HomeNavigateConfirmModal.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { useState } from "react";
2-
import { useNavigate } from "react-router-dom";
32

43
import classNames from "classnames";
54

@@ -9,15 +8,15 @@ import Icon from "@/components/ui/Icon/Icon";
98
import Modal from "@/components/ui/Modal/Modal";
109
import Text from "@/components/ui/Text/Text";
1110

12-
import { PATH } from "@/constants/path";
11+
import { useRoute } from "@/hooks/common/useRoute";
1312

1413
interface HomeNavigateConfirmModalProps {
1514
isOpen: boolean;
1615
handleClose: () => void;
1716
}
1817

1918
const HomeNavigateConfirmModal = ({ isOpen, handleClose }: HomeNavigateConfirmModalProps) => {
20-
const navigate = useNavigate();
19+
const { navigateToHome } = useRoute();
2120

2221
// 이후 상태 초기값 재설정
2322
const [isShowButtonChecked, setIsShowButtonChecked] = useState(false);
@@ -28,7 +27,7 @@ const HomeNavigateConfirmModal = ({ isOpen, handleClose }: HomeNavigateConfirmMo
2827

2928
const handleNavigateHome = () => {
3029
handleClose();
31-
navigate(PATH.HOME);
30+
navigateToHome();
3231
};
3332

3433
return (

src/components/ReceiptEdit/ReceiptEdit.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import { useState } from "react";
2-
import { useNavigate } from "react-router-dom";
32

43
import styles from "@/components/ReceiptEdit/ReceiptEdit.module.scss";
54
import Button from "@/components/ui/Button/Button";
65
import Input from "@/components/ui/Input/Input";
76
import Text from "@/components/ui/Text/Text";
87

9-
import { PATH } from "@/constants/path";
10-
118
import { useFocus } from "@/hooks/common/useFocus";
9+
import { useRoute } from "@/hooks/common/useRoute";
1210

1311
const ReceiptEdit = () => {
14-
const navigate = useNavigate();
12+
const { navigateToSelectTag } = useRoute();
1513

1614
const [placeName, setPlaceName] = useState("청담커피 앤 토스트");
1715
const [foodName, setFoodName] = useState("카야토스트+음료세트");
@@ -23,10 +21,6 @@ const ReceiptEdit = () => {
2321
} = useFocus({});
2422
const { isFocus: isFoodFocus, onFocus: handleFoodFocus, onBlur: handleFoodBlur } = useFocus({});
2523

26-
const handleInfoRightButtonClick = () => {
27-
navigate(PATH.SELECT_TAG);
28-
};
29-
3024
return (
3125
<div className={styles.ReceiptEdit}>
3226
<div className={styles.Top}>
@@ -81,7 +75,7 @@ const ReceiptEdit = () => {
8175
<Button
8276
text="정보가 맞아요"
8377
disabled={!placeName || !foodName}
84-
onClick={handleInfoRightButtonClick}
78+
onClick={navigateToSelectTag}
8579
/>
8680
</>
8781
)}

src/components/RecognitionFail/RecognitionFail.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import styles from "@/components/RecognitionFail/RecognitionFail.module.scss";
22
import Button from "@/components/ui/Button/Button";
33
import Text from "@/components/ui/Text/Text";
44

5+
import { useRoute } from "@/hooks/common/useRoute";
6+
57
const RecognitionFail = () => {
8+
const { navigateToHome, navigateToReceiptEdit } = useRoute();
9+
610
return (
711
<div className={styles.RecognitionFail}>
812
<div className={styles.Title}>
@@ -17,8 +21,8 @@ const RecognitionFail = () => {
1721
<img src="/assets/img/img-recognition-fail.png" alt="recognitionFailImg" />
1822
</div>
1923
<div className={styles.Bottom}>
20-
<Button text="직접 입력하기" variant="secondary" />
21-
<Button text="다시 촬영하기" variant="secondary" />
24+
<Button text="직접 입력하기" variant="secondary" onClick={navigateToReceiptEdit} />
25+
<Button text="다시 촬영하기" variant="secondary" onClick={navigateToHome} />
2226
</div>
2327
</div>
2428
);

src/components/SelectStyle/SelectStyle.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { useState } from "react";
2-
import { useNavigate } from "react-router-dom";
32

43
import classNames from "classnames";
54

@@ -8,7 +7,7 @@ import Button from "@/components/ui/Button/Button";
87
import Icon from "@/components/ui/Icon/Icon";
98
import Text from "@/components/ui/Text/Text";
109

11-
import { PATH } from "@/constants/path";
10+
import { useRoute } from "@/hooks/common/useRoute";
1211

1312
interface StyleProps {
1413
name: string;
@@ -23,18 +22,14 @@ const IMG_STYLE_DATA = [
2322
];
2423

2524
const SelectStyle = () => {
26-
const navigate = useNavigate();
25+
const { navigateToReviewResult } = useRoute();
2726

2827
const [selectedStyle, setSelectedStyle] = useState(IMG_STYLE_DATA[0]);
2928

3029
const handleStyleClick = (style: StyleProps) => {
3130
setSelectedStyle((prevStyle) => (prevStyle.name === style.name ? IMG_STYLE_DATA[0] : style));
3231
};
3332

34-
const handleCreateReviewButtonClick = () => {
35-
navigate(PATH.REVIEW_RESULT);
36-
};
37-
3833
return (
3934
<div className={styles.SelectStyle}>
4035
<div className={styles.Title}>
@@ -68,7 +63,7 @@ const SelectStyle = () => {
6863
</div>
6964

7065
<div className={styles.Bottom}>
71-
<Button text="리뷰 만들기" onClick={handleCreateReviewButtonClick} />
66+
<Button text="리뷰 만들기" onClick={navigateToReviewResult} />
7267
</div>
7368
</div>
7469
);

src/components/SelectTag/SelectTag.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import { useState } from "react";
2-
import { useNavigate } from "react-router-dom";
32

43
import styles from "@/components/SelectTag/SelectTag.module.scss";
54
import TagSheet from "@/components/SelectTag/TagSheet/TagSheet";
65
import Button from "@/components/ui/Button/Button";
76
import Tag from "@/components/ui/Tag/Tag";
87
import Text from "@/components/ui/Text/Text";
98

10-
import { PATH } from "@/constants/path";
9+
import { useRoute } from "@/hooks/common/useRoute";
1110

1211
// 임시 데이터
1312
const TAG_LIST = [
@@ -25,7 +24,7 @@ const TAG_LIST = [
2524
];
2625

2726
const SelectTag = () => {
28-
const navigate = useNavigate();
27+
const { navigateToSelectStyle } = useRoute();
2928

3029
const [selectedTagList, setSelectedTagList] = useState<string[]>([]);
3130
const [isBottomSheetOpen, setIsBottomSheetOpen] = useState(false);
@@ -44,10 +43,6 @@ const SelectTag = () => {
4443
setIsBottomSheetOpen(false);
4544
};
4645

47-
const handleNextButtonClick = () => {
48-
navigate(PATH.SELECT_STYLE);
49-
};
50-
5146
return (
5247
<div className={styles.SelectTag}>
5348
<div className={styles.Top}>
@@ -73,7 +68,7 @@ const SelectTag = () => {
7368
</div>
7469

7570
<div className={styles.Bottom}>
76-
<Button text="다음" onClick={handleNextButtonClick} />
71+
<Button text="다음" onClick={navigateToSelectStyle} />
7772
</div>
7873

7974
<TagSheet isOpen={isBottomSheetOpen} handleClose={handleSheetClose} />

src/components/common/Navbar/Navbar.module.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
height: 2.75rem;
77
padding: 0.75rem 1.25rem;
88
background-color: var(--color-white);
9+
z-index: 1;
10+
position: relative;
911

1012
button {
1113
display: flex;

src/hooks/common/useRoute.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { useNavigate } from "react-router-dom";
2+
3+
import { PATH } from "@/constants/path";
4+
5+
export const useRoute = () => {
6+
const navigate = useNavigate();
7+
8+
const routes = {
9+
navigateToHome: () => navigate(PATH.HOME),
10+
navigateToBack: () => navigate(-1),
11+
navigateToReceiptEdit: () => navigate(PATH.RECEIPT_EDIT),
12+
navigateToRecognitionFail: () => navigate(PATH.RECOGNITION_FAIL),
13+
navigateToReviewResult: () => navigate(PATH.REVIEW_RESULT),
14+
navigateToSelectStyle: () => navigate(PATH.SELECT_STYLE),
15+
navigateToSelectTag: () => navigate(PATH.SELECT_TAG),
16+
};
17+
18+
return routes;
19+
};

src/pages/HomePage.tsx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1-
import { useNavigate } from "react-router-dom";
2-
31
import Navbar from "@/components/common/Navbar/Navbar";
42
import Home from "@/components/Home/Home";
53
import Icon from "@/components/ui/Icon/Icon";
64
import Text from "@/components/ui/Text/Text";
75

8-
const HomePage = () => {
9-
const navigate = useNavigate();
6+
import { useRoute } from "@/hooks/common/useRoute";
107

11-
const handleLogoClick = () => {
12-
navigate("/");
13-
};
8+
const HomePage = () => {
9+
const { navigateToHome } = useRoute();
1410

1511
return (
1612
<>
1713
<Navbar>
18-
<Navbar.LeftButton onClick={handleLogoClick}>
14+
<Navbar.LeftButton onClick={navigateToHome}>
1915
<Icon name="logo" />
2016
</Navbar.LeftButton>
2117
<Navbar.RightButton>

src/pages/ReceiptEditPage.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@ import Navbar from "@/components/common/Navbar/Navbar";
22
import ReceiptEdit from "@/components/ReceiptEdit/ReceiptEdit";
33
import Icon from "@/components/ui/Icon/Icon";
44

5+
import { useRoute } from "@/hooks/common/useRoute";
6+
57
const ReceiptEditPage = () => {
8+
// 이후 영수증 인식 네이티브 라우팅으로 변경
9+
const { navigateToHome } = useRoute();
10+
611
return (
712
<>
813
<Navbar>
9-
<Navbar.LeftButton>
14+
<Navbar.LeftButton onClick={navigateToHome}>
1015
<Icon name="leftArrow" />
1116
</Navbar.LeftButton>
1217
</Navbar>

0 commit comments

Comments
 (0)