1.2 React Setup

์•„๋ฆฌยท2020๋…„ 10์›” 21์ผ
0

๋…ธ๋งˆ๋“œ์ฝ”๋”์˜ ํŠธ์œ„ํ„ฐ ํด๋ก  ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ™‹โ€โ™€๏ธ CRA๋กœ ์‹œ์ž‘ํ•˜๊ธฐ

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,
  //...
};

React Directory structure

src/
  index.js
  firebase.js
  components/
    App.js
    Router.js
  routes/
    Auth.js
    Home.js
    Profile.js

Router

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 ์—์„œ๋Š” ๋ถ„๋ฆฌํ•œ ๋งŒํผ ๋ผ์šฐํŠธ ๊ด€๋ จ๋œ ๋‚ด์šฉ๋งŒ ๋‹ค๋ฃจ๋„๋ก ํ–ˆ๋‹ค.

์ด์ œ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •๋“ค์€ ๋งˆ๋ฌด๋ฆฌ ๋˜์—ˆ๊ณ , ์ธ์ฆ ๊ด€๋ จ ๋‚ด์šฉ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.

profile
ํ”„๋ก ํŠธ์—”๋“œ ๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€