Bläddra i källkod

✨ feat(mobile): add main layout component and adjust navigation paths

- 创建 MainLayout 组件作为移动端主布局容器
- 更新登录/注册页面导航链接,添加/mobile前缀
- 调整股票首页用户菜单导航路径,指向移动端路由
- 修改移动端路由配置,将会员页面路径改为/member
yourname 7 månader sedan
förälder
incheckning
25ef3f3ca7

+ 14 - 0
src/client/mobile/layouts/MainLayout.tsx

@@ -0,0 +1,14 @@
+import React, { useState, useEffect, useMemo } from 'react';
+import {
+  Outlet
+} from 'react-router';
+
+/**
+ * 主布局组件
+ * 包含侧边栏、顶部导航和内容区域
+ */
+export const MainLayout = () => {
+  return (
+    <Outlet />
+  );
+};

+ 1 - 1
src/client/mobile/pages/LoginPage.tsx

@@ -117,7 +117,7 @@ const LoginPage: React.FC = () => {
             <div className="mt-4">
               <button
                 type="button"
-                onClick={() => navigate('/register')}
+                onClick={() => navigate('/mobile/register')}
                 className="w-full flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
               >
                 注册账号

+ 1 - 1
src/client/mobile/pages/RegisterPage.tsx

@@ -174,7 +174,7 @@ const RegisterPage: React.FC = () => {
             <div className="mt-4">
               <button
                 type="button"
-                onClick={() => navigate('/login')}
+                onClick={() => navigate('/mobile/login')}
                 className="w-full flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
               >
                 返回登录

+ 3 - 3
src/client/mobile/pages/StockHomePage.tsx

@@ -23,7 +23,7 @@ export default function StockHomePage() {
           <h1 className="text-xl font-bold">股票训练系统</h1>
           {user ? (
             <div className="flex items-center space-x-4">
-              <div className="flex items-center cursor-pointer" onClick={() => navigate(`/member`)}>
+              <div className="flex items-center cursor-pointer" onClick={() => navigate(`/mobile/member`)}>
                 <div className="w-8 h-8 rounded-full bg-white text-blue-600 flex items-center justify-center mr-2">
                   <svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
                     <path fillRule="evenodd" d="M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z" clipRule="evenodd" />
@@ -35,13 +35,13 @@ export default function StockHomePage() {
           ) : (
             <div className="flex space-x-2">
               <button 
-                onClick={() => navigate('/login')}
+                onClick={() => navigate('/mobile/login')}
                 className="px-3 py-1 rounded text-sm bg-white text-blue-600 hover:bg-blue-50"
               >
                 登录
               </button>
               <button 
-                onClick={() => navigate('/register')}
+                onClick={() => navigate('/mobile/register')}
                 className="px-3 py-1 rounded text-sm bg-white text-blue-600 hover:bg-blue-50"
               >
                 注册

+ 1 - 1
src/client/mobile/routes.tsx

@@ -41,7 +41,7 @@ export const router = createBrowserRouter([
     ),
     children: [
       {
-        path: '',
+        path: 'member',
         element: <MemberPage />
       },
       {