๋ ธ๋ง๋์ฝ๋์ ํธ์ํฐ ํด๋ก ๊ฐ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์งํ๋์์ต๋๋ค.
npx create-react-app [app-name]
Firebase Setup์์ ์ถ๊ฐ ํ๋ ์๋ ์ฝ๋ ๊ฐ์ ๊ฒฝ์ฐ, github์ ๊ทธ๋๋ก ์ฌ๋ฆฌ๊ฒ ๋๋ฉด ํ๋ผ์ด๋นํ ์ฝ๋๊ฐ ์จ์ธ์์ ๋ ธ์ถ์ด ๋์ด๋ฒ๋ฆฐ๋ค.
//fbase.js
const firebaseConfig={...}
์ด๋ฐ ์ํฉ์ ํผํ๊ณ ๋ณด์์ ์ํด (์๋ฒฝํ์ง ์์ง๋ง) .env
๋ฅผ ์ฌ์ฉ ํด๋ณด๋๋ก ํ์.
.env
ํ์ผ๋ก ๋ง๋ค์ด ํค ์ฝ๋๋ฅผ ์ ์ฅํด๋๊ณ process.env
๋ก ๋ถ๋ฌ์ ์ฌ์ฉํ๋๋ก ํ ์ ์๋ค.
React CRA ์ ์ฌ์ฉํ์ ๊ฒฝ์ฐ, .env
๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ ํด์ผ ํ ์ ์ด ์๋๋ฐ, ์์ REACT_APP_
๋ฅผ ๋ถ์ฌ์ผ ํ๋ค๋ ์ฌ์ค์ด๋ค.
//.env
REACT_APP_API_KEY=asdfghjkl
REACT_APP_AUTH_DOMAIN=qwertyuiop
//...
//firebase.js
const firebaseConfig = {
apiKey: process.env.REACT_APP_API_KEY,
authDomain: process.env.REACT_APP_AUTH_DOMAIN,
//...
};
src/
index.js
firebase.js
components/
App.js
Router.js
routes/
Auth.js
Home.js
Profile.js
Router.js ์์ Route๋ฅผ ๋ชจ์๋๋ ํ์์ผ๋ก ์งํ๋์๋ค.
๊ทธ๋ผ ์ด์ Router๋ฅผ ์ฌ์ฉํด๋ณด์.
npm install react-router-dom
//Router.js
import React from 'react';
import {
HashRouter as Router,
Redirect,
Route,
Switch,
} from 'react-router-dom';
import Auth from 'routes/Auth';
import Home from 'routes/Home';
import Profile from 'routes/Profile';
const AppRouter = ({ isLoggedIn }) => {
return (
<Router>
<Switch>
{isLoggedIn ? (
<>
<Route exact path="/">
<Home />
</Route>
<Route exact path="/profile">
<Profile />
</Route>
</>
) : (
<>
<Route exact path="/">
<Auth />
</Route>
<Redirect from="*" to="/" />
</>
)}
</Switch>
</Router>
);
};
export default AppRouter;
isLoggedIn
: App.js ์์ useState
๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , AppRouter
์๊ฒ prop์ผ๋ก ๋ด๋ ค ์ฃผ๋ ํ์์ผ๋ก ์์ฑํ๋ค.
๊ทธ๋์ Router.js ์์๋ ๋ถ๋ฆฌํ ๋งํผ ๋ผ์ฐํธ ๊ด๋ จ๋ ๋ด์ฉ๋ง ๋ค๋ฃจ๋๋ก ํ๋ค.
์ด์ ๊ธฐ๋ณธ์ ์ธ ์ค์ ๋ค์ ๋ง๋ฌด๋ฆฌ ๋์๊ณ , ์ธ์ฆ ๊ด๋ จ ๋ด์ฉ๋ถํฐ ํ๋์ฉ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๋๋ก ํด์ผ๊ฒ ๋ค.