diff --git a/src/pages/CreateReviewLoadingPage/CreateReviewLoadingPage.module.scss b/src/components/CreateReviewLoading/CreateReviewLoading.module.scss
similarity index 100%
rename from src/pages/CreateReviewLoadingPage/CreateReviewLoadingPage.module.scss
rename to src/components/CreateReviewLoading/CreateReviewLoading.module.scss
diff --git a/src/pages/CreateReviewLoadingPage/CreateReviewLoadingPage.tsx b/src/components/CreateReviewLoading/CreateReviewLoading.tsx
similarity index 76%
rename from src/pages/CreateReviewLoadingPage/CreateReviewLoadingPage.tsx
rename to src/components/CreateReviewLoading/CreateReviewLoading.tsx
index 7b121b3..285e4b5 100644
--- a/src/pages/CreateReviewLoadingPage/CreateReviewLoadingPage.tsx
+++ b/src/components/CreateReviewLoading/CreateReviewLoading.tsx
@@ -1,8 +1,7 @@
+import styles from "@/components/CreateReviewLoading/CreateReviewLoading.module.scss";
import Text from "@/components/ui/Text/Text";
-import styles from "@/pages/CreateReviewLoadingPage/CreateReviewLoadingPage.module.scss";
-
-const CreateReviewLoadingPage = () => {
+const CreateReviewLoading = () => {
return (
@@ -21,4 +20,4 @@ const CreateReviewLoadingPage = () => {
);
};
-export default CreateReviewLoadingPage;
+export default CreateReviewLoading;
diff --git a/src/components/Home/Home.tsx b/src/components/Home/Home.tsx
index b0eac9e..229914d 100644
--- a/src/components/Home/Home.tsx
+++ b/src/components/Home/Home.tsx
@@ -2,7 +2,12 @@ import styles from "@/components/Home/Home.module.scss";
import IconButton from "@/components/ui/IconButton/IconButton";
import Text from "@/components/ui/Text/Text";
+import { useRoute } from "@/hooks/common/useRoute";
+
const Home = () => {
+ // 이후 네이티브 라우팅으로 변경
+ const { navigateToReceiptEdit, navigateToRecognitionFail } = useRoute();
+
return (
@@ -17,8 +22,8 @@ const Home = () => {
-
-
+
+
);
diff --git a/src/components/HomeNavigateConfirmModal/HomeNavigateConfirmModal.tsx b/src/components/HomeNavigateConfirmModal/HomeNavigateConfirmModal.tsx
index ea02283..f26fafb 100644
--- a/src/components/HomeNavigateConfirmModal/HomeNavigateConfirmModal.tsx
+++ b/src/components/HomeNavigateConfirmModal/HomeNavigateConfirmModal.tsx
@@ -1,5 +1,4 @@
import { useState } from "react";
-import { useNavigate } from "react-router-dom";
import classNames from "classnames";
@@ -9,13 +8,15 @@ import Icon from "@/components/ui/Icon/Icon";
import Modal from "@/components/ui/Modal/Modal";
import Text from "@/components/ui/Text/Text";
+import { useRoute } from "@/hooks/common/useRoute";
+
interface HomeNavigateConfirmModalProps {
isOpen: boolean;
handleClose: () => void;
}
const HomeNavigateConfirmModal = ({ isOpen, handleClose }: HomeNavigateConfirmModalProps) => {
- const navigate = useNavigate();
+ const { navigateToHome } = useRoute();
// 이후 상태 초기값 재설정
const [isShowButtonChecked, setIsShowButtonChecked] = useState(false);
@@ -26,7 +27,7 @@ const HomeNavigateConfirmModal = ({ isOpen, handleClose }: HomeNavigateConfirmMo
const handleNavigateHome = () => {
handleClose();
- navigate("/");
+ navigateToHome();
};
return (
diff --git a/src/components/ReceiptEdit/ReceiptEdit.tsx b/src/components/ReceiptEdit/ReceiptEdit.tsx
index a7e2404..86c4e7d 100644
--- a/src/components/ReceiptEdit/ReceiptEdit.tsx
+++ b/src/components/ReceiptEdit/ReceiptEdit.tsx
@@ -6,8 +6,11 @@ import Input from "@/components/ui/Input/Input";
import Text from "@/components/ui/Text/Text";
import { useFocus } from "@/hooks/common/useFocus";
+import { useRoute } from "@/hooks/common/useRoute";
const ReceiptEdit = () => {
+ const { navigateToSelectTag } = useRoute();
+
const [placeName, setPlaceName] = useState("청담커피 앤 토스트");
const [foodName, setFoodName] = useState("카야토스트+음료세트");
@@ -69,7 +72,11 @@ const ReceiptEdit = () => {
) : (
<>
-
+
>
)}
diff --git a/src/components/RecognitionFail/RecognitionFail.tsx b/src/components/RecognitionFail/RecognitionFail.tsx
index 5e161ab..3c6ea83 100644
--- a/src/components/RecognitionFail/RecognitionFail.tsx
+++ b/src/components/RecognitionFail/RecognitionFail.tsx
@@ -2,7 +2,11 @@ import styles from "@/components/RecognitionFail/RecognitionFail.module.scss";
import Button from "@/components/ui/Button/Button";
import Text from "@/components/ui/Text/Text";
+import { useRoute } from "@/hooks/common/useRoute";
+
const RecognitionFail = () => {
+ const { navigateToHome, navigateToReceiptEdit } = useRoute();
+
return (
@@ -17,8 +21,8 @@ const RecognitionFail = () => {
-
-
+
+
);
diff --git a/src/components/ReceiptResult/ReceiptResult.module.scss b/src/components/ReviewResult/ReviewResult.module.scss
similarity index 98%
rename from src/components/ReceiptResult/ReceiptResult.module.scss
rename to src/components/ReviewResult/ReviewResult.module.scss
index bda99c2..45fa96d 100644
--- a/src/components/ReceiptResult/ReceiptResult.module.scss
+++ b/src/components/ReviewResult/ReviewResult.module.scss
@@ -1,4 +1,4 @@
-.ReceiptResult {
+.ReviewResult {
padding: 1.25rem;
padding-bottom: 2.5rem;
height: calc(100vh - 2.75rem);
diff --git a/src/components/ReceiptResult/ReceiptResult.tsx b/src/components/ReviewResult/ReviewResult.tsx
similarity index 91%
rename from src/components/ReceiptResult/ReceiptResult.tsx
rename to src/components/ReviewResult/ReviewResult.tsx
index 1210d8a..14df758 100644
--- a/src/components/ReceiptResult/ReceiptResult.tsx
+++ b/src/components/ReviewResult/ReviewResult.tsx
@@ -3,7 +3,7 @@ import { useEffect } from "react";
import confetti from "canvas-confetti";
import HomeNavigateConfirmModal from "@/components/HomeNavigateConfirmModal/HomeNavigateConfirmModal";
-import styles from "@/components/ReceiptResult/ReceiptResult.module.scss";
+import styles from "@/components/ReviewResult/ReviewResult.module.scss";
import Button from "@/components/ui/Button/Button";
import IconButton from "@/components/ui/IconButton/IconButton";
import Text from "@/components/ui/Text/Text";
@@ -12,7 +12,7 @@ import { useOverlay } from "@/hooks/common/useOverlay";
import type { Options as ConfettiOptions } from "canvas-confetti";
-const ReceiptResult = () => {
+const ReviewResult = () => {
const { isOpen, handleClose, handleOpen } = useOverlay();
const handleConfetti = () => {
@@ -34,7 +34,7 @@ const ReceiptResult = () => {
}, []);
return (
-
+

@@ -64,4 +64,4 @@ const ReceiptResult = () => {
);
};
-export default ReceiptResult;
+export default ReviewResult;
diff --git a/src/components/SelectStyle/SelectStyle.tsx b/src/components/SelectStyle/SelectStyle.tsx
index e2965c2..c001d72 100644
--- a/src/components/SelectStyle/SelectStyle.tsx
+++ b/src/components/SelectStyle/SelectStyle.tsx
@@ -7,6 +7,8 @@ import Button from "@/components/ui/Button/Button";
import Icon from "@/components/ui/Icon/Icon";
import Text from "@/components/ui/Text/Text";
+import { useRoute } from "@/hooks/common/useRoute";
+
interface StyleProps {
name: string;
image: string;
@@ -20,6 +22,8 @@ const IMG_STYLE_DATA = [
];
const SelectStyle = () => {
+ const { navigateToReviewResult } = useRoute();
+
const [selectedStyle, setSelectedStyle] = useState(IMG_STYLE_DATA[0]);
const handleStyleClick = (style: StyleProps) => {
@@ -59,7 +63,7 @@ const SelectStyle = () => {
-
+
);
diff --git a/src/components/SelectTag/SelectTag.tsx b/src/components/SelectTag/SelectTag.tsx
index ee515ea..4203d89 100644
--- a/src/components/SelectTag/SelectTag.tsx
+++ b/src/components/SelectTag/SelectTag.tsx
@@ -6,6 +6,8 @@ import Button from "@/components/ui/Button/Button";
import Tag from "@/components/ui/Tag/Tag";
import Text from "@/components/ui/Text/Text";
+import { useRoute } from "@/hooks/common/useRoute";
+
// 임시 데이터
const TAG_LIST = [
"음식이 맛있어요",
@@ -22,6 +24,8 @@ const TAG_LIST = [
];
const SelectTag = () => {
+ const { navigateToSelectStyle } = useRoute();
+
const [selectedTagList, setSelectedTagList] = useState
([]);
const [isBottomSheetOpen, setIsBottomSheetOpen] = useState(false);
@@ -64,7 +68,7 @@ const SelectTag = () => {
-
+
diff --git a/src/components/common/Navbar/Navbar.module.scss b/src/components/common/Navbar/Navbar.module.scss
index 5038e0a..3e30025 100644
--- a/src/components/common/Navbar/Navbar.module.scss
+++ b/src/components/common/Navbar/Navbar.module.scss
@@ -6,6 +6,8 @@
height: 2.75rem;
padding: 0.75rem 1.25rem;
background-color: var(--color-white);
+ z-index: 1;
+ position: relative;
button {
display: flex;
diff --git a/src/constants/path.ts b/src/constants/path.ts
new file mode 100644
index 0000000..0ba24f1
--- /dev/null
+++ b/src/constants/path.ts
@@ -0,0 +1,8 @@
+export const PATH = {
+ HOME: "/",
+ RECOGNITION_FAIL: "/recognition-fail",
+ RECEIPT_EDIT: "/receipt-edit",
+ SELECT_TAG: "/select-tag",
+ SELECT_STYLE: "/select-style",
+ REVIEW_RESULT: "/review-result",
+};
diff --git a/src/hooks/common/useRoute.ts b/src/hooks/common/useRoute.ts
new file mode 100644
index 0000000..f5fea44
--- /dev/null
+++ b/src/hooks/common/useRoute.ts
@@ -0,0 +1,19 @@
+import { useNavigate } from "react-router-dom";
+
+import { PATH } from "@/constants/path";
+
+export const useRoute = () => {
+ const navigate = useNavigate();
+
+ const routes = {
+ navigateToHome: () => navigate(PATH.HOME),
+ navigateToBack: () => navigate(-1),
+ navigateToReceiptEdit: () => navigate(PATH.RECEIPT_EDIT),
+ navigateToRecognitionFail: () => navigate(PATH.RECOGNITION_FAIL),
+ navigateToReviewResult: () => navigate(PATH.REVIEW_RESULT),
+ navigateToSelectStyle: () => navigate(PATH.SELECT_STYLE),
+ navigateToSelectTag: () => navigate(PATH.SELECT_TAG),
+ };
+
+ return routes;
+};
diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx
index 79c264f..397e53d 100644
--- a/src/pages/HomePage.tsx
+++ b/src/pages/HomePage.tsx
@@ -1,21 +1,17 @@
-import { useNavigate } from "react-router-dom";
-
import Navbar from "@/components/common/Navbar/Navbar";
import Home from "@/components/Home/Home";
import Icon from "@/components/ui/Icon/Icon";
import Text from "@/components/ui/Text/Text";
-const HomePage = () => {
- const navigate = useNavigate();
+import { useRoute } from "@/hooks/common/useRoute";
- const handleLogoClick = () => {
- navigate("/");
- };
+const HomePage = () => {
+ const { navigateToHome } = useRoute();
return (
<>
-
+
diff --git a/src/pages/ReceiptEditPage.tsx b/src/pages/ReceiptEditPage.tsx
index f954d41..7251cc6 100644
--- a/src/pages/ReceiptEditPage.tsx
+++ b/src/pages/ReceiptEditPage.tsx
@@ -2,11 +2,16 @@ import Navbar from "@/components/common/Navbar/Navbar";
import ReceiptEdit from "@/components/ReceiptEdit/ReceiptEdit";
import Icon from "@/components/ui/Icon/Icon";
+import { useRoute } from "@/hooks/common/useRoute";
+
const ReceiptEditPage = () => {
+ // 이후 영수증 인식 네이티브 라우팅으로 변경
+ const { navigateToHome } = useRoute();
+
return (
<>
-
+
diff --git a/src/pages/ReceiptResultPage.tsx b/src/pages/ReceiptResultPage.tsx
deleted file mode 100644
index 7a7ef5e..0000000
--- a/src/pages/ReceiptResultPage.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import Navbar from "@/components/common/Navbar/Navbar";
-import ReceiptResult from "@/components/ReceiptResult/ReceiptResult";
-import Icon from "@/components/ui/Icon/Icon";
-
-export default function ReceiptResultPage() {
- return (
- <>
-
-
-
-
-
-
- >
- );
-}
diff --git a/src/pages/RecognitionFailPage.tsx b/src/pages/RecognitionFailPage.tsx
index 96b4262..55c43ab 100644
--- a/src/pages/RecognitionFailPage.tsx
+++ b/src/pages/RecognitionFailPage.tsx
@@ -2,11 +2,15 @@ import Navbar from "@/components/common/Navbar/Navbar";
import RecognitionFail from "@/components/RecognitionFail/RecognitionFail";
import Icon from "@/components/ui/Icon/Icon";
+import { useRoute } from "@/hooks/common/useRoute";
+
const RecognitionFailPage = () => {
+ const { navigateToHome } = useRoute();
+
return (
<>
-
+
diff --git a/src/pages/ReviewResultPage.tsx b/src/pages/ReviewResultPage.tsx
new file mode 100644
index 0000000..148008c
--- /dev/null
+++ b/src/pages/ReviewResultPage.tsx
@@ -0,0 +1,42 @@
+import { useEffect, useState } from "react";
+
+import Navbar from "@/components/common/Navbar/Navbar";
+import CreateReviewLoading from "@/components/CreateReviewLoading/CreateReviewLoading";
+import ReviewResult from "@/components/ReviewResult/ReviewResult";
+import Icon from "@/components/ui/Icon/Icon";
+
+import { useRoute } from "@/hooks/common/useRoute";
+
+// 로딩 코드 api 연결 후 삭제
+export default function ReviewResultPage() {
+ const { navigateToBack } = useRoute();
+
+ const [isLoading, setIsLoading] = useState(true);
+
+ useEffect(() => {
+ const timer = setTimeout(() => {
+ setIsLoading(false);
+ }, 3000);
+
+ return () => clearTimeout(timer);
+ }, []);
+
+ if (isLoading) {
+ return ;
+ }
+
+ return (
+ <>
+ {!isLoading && (
+ <>
+
+
+
+
+
+
+ >
+ )}
+ >
+ );
+}
diff --git a/src/pages/SelectStylePage.tsx b/src/pages/SelectStylePage.tsx
index 5799baa..542a805 100644
--- a/src/pages/SelectStylePage.tsx
+++ b/src/pages/SelectStylePage.tsx
@@ -2,11 +2,15 @@ import Navbar from "@/components/common/Navbar/Navbar";
import SelectStyle from "@/components/SelectStyle/SelectStyle";
import Icon from "@/components/ui/Icon/Icon";
+import { useRoute } from "@/hooks/common/useRoute";
+
const SelectStylePage = () => {
+ const { navigateToBack } = useRoute();
+
return (
<>
-
+
diff --git a/src/pages/SelectTagPage.tsx b/src/pages/SelectTagPage.tsx
index d0ee869..152e20f 100644
--- a/src/pages/SelectTagPage.tsx
+++ b/src/pages/SelectTagPage.tsx
@@ -2,11 +2,15 @@ import Navbar from "@/components/common/Navbar/Navbar";
import SelectTag from "@/components/SelectTag/SelectTag";
import Icon from "@/components/ui/Icon/Icon";
+import { useRoute } from "@/hooks/common/useRoute";
+
const SelectTagPage = () => {
+ const { navigateToBack } = useRoute();
+
return (
<>
-
+
diff --git a/src/router/AppRouter.tsx b/src/router/AppRouter.tsx
index 033029c..3988153 100644
--- a/src/router/AppRouter.tsx
+++ b/src/router/AppRouter.tsx
@@ -2,18 +2,19 @@ import { RouterProvider, createBrowserRouter } from "react-router-dom";
import App from "@/App";
-import CreateReviewLoadingPage from "@/pages/CreateReviewLoadingPage/CreateReviewLoadingPage";
+import { PATH } from "@/constants/path";
+
import HomePage from "@/pages/HomePage";
import ReceiptEditPage from "@/pages/ReceiptEditPage";
-import ReceiptResultPage from "@/pages/ReceiptResultPage";
import RecognitionFailPage from "@/pages/RecognitionFailPage";
+import ReviewResultPage from "@/pages/ReviewResultPage";
import SelectStylePage from "@/pages/SelectStylePage";
import SelectTagPage from "@/pages/SelectTagPage";
const AppRouter = () => {
const router = createBrowserRouter([
{
- path: "/",
+ path: PATH.HOME,
element: ,
children: [
{
@@ -21,28 +22,24 @@ const AppRouter = () => {
element: ,
},
{
- path: "/recognition-fail",
+ path: PATH.RECOGNITION_FAIL,
element: ,
},
{
- path: "/receipt-edit",
+ path: PATH.RECEIPT_EDIT,
element: ,
},
{
- path: "/select-tag",
+ path: PATH.SELECT_TAG,
element: ,
},
{
- path: "/select-style",
+ path: PATH.SELECT_STYLE,
element: ,
},
{
- path: "/create-review-loading",
- element: ,
- },
- {
- path: "/receipt-result",
- element: ,
+ path: PATH.REVIEW_RESULT,
+ element: ,
},
],
},