반응형
Firebase 연결 작업이 끝났으므로 실제로 로그인 페이지를 구현해 보도록 합니다.
우선 src폴더 안의 pages폴더에 LoginPage.js파일 생성하고 코드를 작성합니다.
LoginPage.js
import { useState } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import { getAuth, signInWithEmailAndPassword } from 'firebase/auth';
const LoginPage = () => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [error, setError] = useState('');
const navigate = useNavigate();
const logIn = async () => {
try {
await signInWithEmailAndPassword(getAuth(), email, password);
navigate('/articles');
} catch (e) {
setError(e.message);
}
}
return (
<>
<h1>Log In</h1>
{error && <p className="error">{error}</p>}
<input
placeholder="Your email address"
value={email}
onChange={e => setEmail(e.target.value)} />
<input
type="password"
placeholder="Your password"
value={password}
onChange={e => setPassword(e.target.value)} />
<button onClick={logIn}>Log In</button>
<Link to="/create-account">Don't have an account? Create one here</Link>
</>
);
}
export default LoginPage;
로그인 페이지가 완성되었고 이제 App페이지에 이 페이지로 진입할수 있도록 Route path지정을 해줍니다. 변경된 App.js파일은 다음과 같습니다.
App.js
import './App.css';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import NavBar from './NavBar';
import HomePage from './pages/HomePage';
import AboutPage from './pages/AboutPage';
import AriclesListPage from './pages/ArticlesListPage';
import AriclePage from './pages/ArticlePage';
import NotFoundPage from './pages/NotFoundPage';
import LoginPage from './pages/LoginPage';
function App() {
return (
<BrowserRouter>
<div className="App">
<NavBar />
<div id="page-body">
<Routes>
<Route path='/' element={<HomePage />} />
<Route path='/about' element={<AboutPage />} />
<Route path='/articles' element={<AriclesListPage />} />
<Route path='/articles/:articleId' element={<AriclePage />} />
<Route path="/login" element={<LoginPage />} />
<Route path="*" element={<NotFoundPage />} />
</Routes>
</div>
</div>
</BrowserRouter>
);
}
export default App;
로그인 페이지로 이동한 결과 화면은 다음과 같습니다.

로그인 페이지가 완성되었습니다.
반응형
'PROGRAMING > FULL STACK' 카테고리의 다른 글
[Auth] Build create account page (0) | 2024.03.26 |
---|---|
[Auth] Custom auth hook (0) | 2024.03.23 |
[Auth] Adding Firebase Auth to React (0) | 2024.03.23 |
[Auth] Firebase Auth (0) | 2024.03.23 |
[Front End - Back End] Creating an add comment form (0) | 2024.03.21 |