feat: use react-router-dom's Link

main
spacemeowx2 2023-03-06 22:01:18 +08:00 committed by imspace
parent 830456ea62
commit a98e02f15e
5 changed files with 12 additions and 4 deletions

View File

@ -5,6 +5,7 @@ import { Routes, Route } from "react-router-dom";
import { Layout } from "components/Layout"; import { Layout } from "components/Layout";
import { Home } from "pages/Home"; import { Home } from "pages/Home";
import { Settings } from "pages/Settings"; import { Settings } from "pages/Settings";
import { Guide } from 'pages/Guide';
function App() { function App() {
useEffect(() => { useEffect(() => {
@ -19,6 +20,7 @@ function App() {
<Route path='/' element={<Layout />}> <Route path='/' element={<Layout />}>
<Route index element={<Home />} /> <Route index element={<Home />} />
<Route path='/settings' element={<Settings />} /> <Route path='/settings' element={<Settings />} />
<Route path='/guide' element={<Guide />} />
</Route> </Route>
</Routes> </Routes>
); );

View File

@ -2,8 +2,9 @@ import React from 'react'
import { AiOutlineLoading3Quarters } from 'react-icons/ai'; import { AiOutlineLoading3Quarters } from 'react-icons/ai';
type LoadingProps = { type LoadingProps = {
className?: string
} }
export const Loading: React.FC<LoadingProps> = () => { export const Loading: React.FC<LoadingProps> = ({ className }) => {
return <AiOutlineLoading3Quarters className='animate-spin my-2 mx-auto' /> return <AiOutlineLoading3Quarters className={`animate-spin my-2 mx-auto ${className}`} />
} }

3
gui/src/pages/Guide.tsx Normal file
View File

@ -0,0 +1,3 @@
export const Guide: React.FC = () => {
return <></>
}

View File

@ -1,5 +1,6 @@
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { Link } from "react-router-dom";
export const Home: React.FC = () => { export const Home: React.FC = () => {
const { t } = useTranslation(); const { t } = useTranslation();
@ -7,7 +8,7 @@ export const Home: React.FC = () => {
return <> return <>
<div className='card m-2 h-full'> <div className='card m-2 h-full'>
{t('欢迎!')} {t('欢迎!')}
<a href='/settings' className='btn btn-primary'>{t('配置')}</a> <Link to='/settings' className='btn btn-primary'>{t('配置')}</Link>
</div> </div>
</> </>
} }

View File

@ -1,3 +1,4 @@
import { Loading } from 'components/Loading';
import { usePromise } from 'hooks/usePromise'; import { usePromise } from 'hooks/usePromise';
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
@ -13,7 +14,7 @@ export const Settings: React.FC = () => {
} }
if (loading) { if (loading) {
return <div className='card m-2 h-full'>{t('加载中...')}</div> return <div className='h-full flex items-center justify-center'><Loading /></div>
} }
return <> return <>