diff --git a/frontend/src/components/Layout.tsx b/frontend/src/components/Layout.tsx index 75a6d10..fe8bff1 100644 --- a/frontend/src/components/Layout.tsx +++ b/frontend/src/components/Layout.tsx @@ -38,27 +38,50 @@ const Layout: React.FC = () => { const navigate = useNavigate(); const location = useLocation(); const [drawerOpen, setDrawerOpen] = useState(false); - const [bottomNavi, setBottomNavi] = useState(1); - - /** - * ログアウト処理を行うハンドラー関数 - * ローカルストレージからトークンを削除し、ログインページにリダイレクト - */ - const handleLogout = () => { - localStorage.removeItem('token'); - navigate('/login'); - }; - - + const getTabIndex = (pathname: string) => { + switch (pathname) { + case '/stock': + return 0; + case '/tasks': + return 1; + case '/recipeList': + return 2; + default: + return 0; + } + }; + + + + + + const [bottomNavi, setBottomNavi] = useState(getTabIndex(location.pathname)); + + useEffect(() => { + setBottomNavi(getTabIndex(location.pathname)); + }, [location.pathname]); + + /** + * ログアウト処理を行うハンドラー関数 + * ローカルストレージからトークンを削除し、ログインページにリダイレクト + */ + const handleLogout = () => { + localStorage.removeItem('token'); + navigate('/login'); + }; + - // メニューを開閉するハンドラー - const toggleDrawer = () => { - setDrawerOpen(!drawerOpen); - }; - // メッセージ表示 + + + // メニューを開閉するハンドラー + const toggleDrawer = () => { + setDrawerOpen(!drawerOpen); + }; + + // メッセージ表示 // ページ遷移後もメッセージを維持 useEffect(() => { @@ -91,67 +114,57 @@ const Layout: React.FC = () => { sessionStorage.removeItem('globalMessage'); }; - const handleBottomNavigation = (event: React.SyntheticEvent, newValue: any) => { - setBottomNavi(newValue); - switch(newValue) { - case 0: - navigate('stock'); - break; - case 1: - navigate('tasks'); - break; - case 2: - navigate('recipeList'); - break; - } - // ここでルーティング処理などを行う - } - - return ( - - {/* ヘッダー部分 - アプリ名とログアウトボタンを表示 */} - - - - shopchop - - - - - - - { - setBottomNavi(newValue); - switch(newValue) { - case 0: - navigate('stock'); - break; - case 1: - navigate('tasks'); - break; - case 2: - navigate('recipeList'); - break; - } - // ここでルーティング処理などを行う - }} - > - } /> - } /> - } /> - - - - {/* メインコンテンツ領域 - 子ルートのコンポーネントがここに表示される */} - - - - + + + return ( + + {/* ヘッダー部分 - アプリ名とログアウトボタンを表示 */} + + + + shopchop + + + + + + + + + + theme.zIndex.drawer + 1 }} elevation={3}> + { + setBottomNavi(newValue); + switch (newValue) { + case 0: + navigate('stock'); + break; + case 1: + navigate('tasks'); + break; + case 2: + navigate('recipeList'); + break; + } + // ここでルーティング処理などを行う + }} + > + } /> + } /> + } /> + + + + + {/* メインコンテンツ領域 - 子ルートのコンポーネントがここに表示される */} + + + { /> {/* React Router の Outlet - 子ルートのコンポーネントがここにレンダリングされる */} - - + + - - ); -}; + ); + }; + -export default Layout; \ No newline at end of file + export default Layout; diff --git a/frontend/src/pages/TaskListPage.tsx b/frontend/src/pages/TaskListPage.tsx index 89ac674..51a7f06 100644 --- a/frontend/src/pages/TaskListPage.tsx +++ b/frontend/src/pages/TaskListPage.tsx @@ -330,21 +330,21 @@ const TaskListPage: React.FC = () => { {/* 新規材料作成ボタン - 画面下部に固定表示 */} - + - 材料のみ追加 + 材料の追加 setOpenAddToBuyDialog(true)} > {/*新規料理追加ボタン - 画面下部に固定表示 */} - + {/* 料理から追加 @@ -359,7 +359,7 @@ const TaskListPage: React.FC = () => { //selected={isSelected('/test')} > - + */} {/* 買うものリストへの材料追加ダイアログ */}