하이어+플러스! 직원용 구축 방법은 다음과 같습니다(UI - 경로).
14327 단어 tutorialprogrammingreactwebdev
App.tsx
수입품
가져온 파일의 절반은 구성 요소 및 경로 페이지에서 가져온 것입니다.
setSignedIn
는 현재 로그인한 사용자가 있는 경우 로그인 상태를 설정하는 데 사용됩니다. onAuthStateChangedListener
는 사용자가 로그인하거나 로그아웃할 때 리스너가 됩니다.import { useEffect } from 'react';
import { Routes, Route } from 'react-router-dom';
import { useAppDispatch } from './app/hooks';
import Launch from './routes/launch/launch-page';
import { setSignedIn } from './app/features/auth/authSlice';
import { onAuthStateChangedListener } from './utils/firebase/firebase.utils';
import SignIn from './components/sign-in/sign-in.component';
import Signup from './components/sign-up/sign-up.component';
import NoMatch from './routes/noMatch/NoMatch';
import ProfilePage from './routes/profile/profile-page';
import JobsPage from './routes/job/job-page';
import PrivateRoute from './components/privateRoute/private-route.component';
import AuthPage from './routes/auth/auth-page';
import HomePage from './routes/home/home-page';
import CompanyPage from './routes/company/CompanyPage';
import JobDetail from './routes/job/job-detail';
앱()
useEffect
: 앱이 마운트되면 onAuthStateChangedListener
를 사용하여 사용자를 확인합니다. 사용자가 로그인한 경우 setSignedIn
가 현재 사용자를 상태로 디스패치하고 설정합니다. 그렇지 않은 경우 현재 사용자는 아무 것도 설정되지 않습니다.function App() {
const dispatch = useAppDispatch();
useEffect(() => {
const unsubscribe = onAuthStateChangedListener(async (user) => {
if (user) {
const { displayName, uid } = user;
dispatch(
setSignedIn({ signedIn: true, currentUser: { uid, displayName } })
);
} else {
dispatch(setSignedIn({ signedIn: false, currentUser: {} }));
}
});
// runs when the component unmounts
return unsubscribe;
}, [dispatch]);
return ( // removed for simplicity );
}
export default App;
렌더링 경로
-- /
-- /app
-- /auth/employees
-- /
-- /sign-up
-- /user/profile/:id
-- /company/:id
-- /job/:id
-- *
/
- 경로가 시작 페이지를 렌더링합니다./app
- 다른 모든 경로가 중첩되어 있습니다. 기본적으로 작업 페이지를 표시합니다./auth/employees
- 내부에 중첩된 두 개의 경로가 있습니다. 기본적으로 로그인 페이지가 표시되고 navbar 링크가 가입 페이지로 연결됩니다./user/profile/:id
- 프로필을 업데이트하기 위한 편집 페이지가 표시됩니다. 비공개 보기이므로 로그인하지 않으면 볼 수 없습니다./company/:id
- 회사 페이지를 표시합니다./job/:id
- 작업 세부 정보 페이지를 표시합니다.*
- 위에서 설명한 경로와 일치하는 경로가 없는 경우 포괄적인 페이지를 표시합니다.function App() {
// removed for simplicity
return (
<>
<Routes>
<Route path="/" element={<Launch />} />
<Route path="/app" element={<HomePage />}>
<Route index element={<JobsPage />} />
<Route path="auth/employees" element={<AuthPage />}>
<Route index element={<SignIn />} />
<Route path="sign-up" element={<Signup />} />
...
</Route>
<Route
path="user/profile/:id"
element={
<PrivateRoute>
<ProfilePage />
</PrivateRoute>
}
/>
<Route path="company/:id" element={<CompanyPage />} />
<Route path="job/:id" element={<JobDetail />} />
</Route>
<Route path="*" element={<NoMatch />} />
</Routes>
</>
);
}
export default App;
경로 폴더 구조
이것이 어떻게 구성되어 있는지에 대한 간략한 요약. redux 섹션에 있는 것과 유사하게 기능별로 정리했습니다. 관련 기능이 없는 부분은
launch
, noMatch
및 home
입니다.구성 요소 폴더 구조
프로젝트의 경로 부분은 여기까지입니다. 계속 지켜봐 주세요!
Reference
이 문제에 관하여(하이어+플러스! 직원용 구축 방법은 다음과 같습니다(UI - 경로).), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ajeasmith/hiring-platform-app-hireplus-heres-how-i-built-it-ui-routes-481o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)