[TIL] React Project - Route

Danbi Choยท2020๋…„ 4์›” 22์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
11/20

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ์ด๋ก  ์ •๋ฆฌ

Route ์ด๋™ํ•˜๊ธฐ

  • Route ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
  • Routes.js์—์„œ ์„ค์ •ํ•œ path๋กœ ์ด๋™ํ•˜๋ ค๋ฉด Link ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
import React from 'react';
import { Link } from 'react-router-dom';

class Login extends React.Component {
  render() {
    return (
      <div>
        <Link to="/signup">ํšŒ์›๊ฐ€์ž…</Link>
      </div>
    )
  }
}

export default Login;
  • react-router-dom์—์„œ ์ œ๊ณตํ•˜๋Š” Link ์ปดํฌ๋„ŒํŠธ๋Š” dom์—์„œ <a>ํƒœ๊ทธ๋กœ ๋ณ€ํ™˜ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€๋ฅผ ๋ฌด์กฐ๊ฑด ์ด๋™ํ•˜๋ ค๊ณ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

withRouter HOC๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • Link๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  element์— onClick ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์„œ ์ด๋™ํ•˜๊ณ  ์‹ถ์€ Router๋กœ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์•„๋ž˜ goToSignup ์ด๋ผ๋Š” event handler์—์„œ ์ฒ˜๋Ÿผ this.props์˜ history๋กœ ์ ‘๊ทผํ•ด์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ›์€ history์˜ push ๋ฉ”์„œ๋“œ์— ์ด๋™ํ•  path๋ฅผ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด ๊ทธ Route๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.
import React from 'react';
import { withRouter } from 'react-router-dom';

class Login extends React.Component {

  goToSignup() {
    this.props.history.push('/signup');
  }

  render() {
    return (
      <div>
        <div
          class="btn signup-btn"
          onClick={this.goToSignup.bind(this)}
        >
          ํšŒ์›๊ฐ€์ž…
        </div>
      </div>
    )
  }
}

export default withRouter(Login);
// props์— route ์ •๋ณด(history)๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด exportํ•˜๋Š” class์— withRouter๋กœ ๊ฐ์‹ธ์ค˜์•ผ ํ•œ๋‹ค. 
  • ์ด ๋ฐฉ๋ฒ•์€ Route๊ฐ€ ์ด๋™ํ•  ๋•Œ ์กฐ๊ฑด์„ ์ฃผ๊ณ ์žํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๋กœ์ง์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ณ , ์›ํ•˜๋Š” ๋•Œ์— ํŽ˜์ด์ง€๋ฅผ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

Mock Data

  • mock data, mock-up data๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ๊ฐ€์งœ ๋ฐ์ดํ„ฐ, ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‹ค์ œ API์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•„์š”์— ์˜ํ•ด์„œ ๊ฐ€์งœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ํ™•์ธํ•ด ๋ณด๋Š” ์šฉ๋„๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Mock Data๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

  • API๊ฐ€ ์ค€๋น„ ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์ œ๋Œ€๋กœ UI๊ฐ€ ๊ตฌํ˜„ ๋˜๋Š”์ง€ ํ™•์ธ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
    ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ API๊ฐ€ ์™„์„ฑ๋˜๊ธฐ ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ mock data๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์ƒํ™ฉ์„ ๋ฏธ๋ฆฌ ์˜ˆ์ƒํ•˜๊ณ , ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ UI๊ฐ€ ๊ณ„ํš๋Œ€๋กœ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•จ
profile
๋ฃฐ๋ฃจ๋ž„๋ผ! ๊ฐœ๋ฐœ์ž ๋˜๊ณ  ์‹ถ์–ด์š”๐Ÿ™ˆ

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