React

React | ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํ™œ์„ฑํ™”(React๋ฅผ ์ด์šฉํ•˜์—ฌ)

2022. 1. 13. 10:26
๋ชฉ์ฐจ
  1. ๐Ÿ“š ๊ณต๋ถ€ํ•ด์•ผํ•  ๊ฒƒ
  2. ๐Ÿ“Œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

๐Ÿซ ์˜ค๋Š˜์˜ ๋ฏธ์…˜

React์˜ state์™€ event ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์— js๋กœ ๊ตฌํ˜„ํ–ˆ๋˜ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํ™œ์„ฑํ™” ๊ธฐ๋Šฅ์„ React๋กœ ๋ณ€ํ™˜ํ•ด ๋ณด๊ฒ ๋‹ค.

#Routes.js
import LoginSejun from './pages/sejun/Login/Login';

class Routes extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      id: 0,
      pw: 0,
    };
  }
  render() {
    return (
      <Router>
        <Nav />
        <Switch>
          <Route exact path="/login-sejun" component={LoginSejun} />
          .
          .
          .
#Login.js
import React from 'react';
import { Link } from 'react-router-dom';
import './Login.scss';

class Login extends React.Component {
  render() {
    return (
      <div className="loginBoard">
        <div className="logo">Westagram</div>

        <form action="" className="loginTable">
          <input
            onChange={function handleInput(e) {
              this.setState({
                id: e.target.value,
              });
              e.preventDefault();
            }.bind(this)}
            type="text"
            placeholder="์ „ํ™”๋ฒˆํ˜ธ, ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋˜๋Š” ์ด๋ฉ”์ผ"
            className="loginId"
          />
          {console.log(this.state)}
          .
          .
          .

Login.js์˜ input ์—์„œ onChange ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด id ์™€ pw ๊ฐ€ Routes.js์˜ this.state ์— ๊ฐ์ฒดํ˜•ํƒœ๋กœ ์ „๋‹ฌ๋˜๊ฒŒ ํ•˜๊ณ  ์ด๋ฅผ console.log ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์œ„์™€ ๊ฐ™์ด input์— ๊ฐ’์ด ๋ณ€ํ™”ํ• ๋•Œ๋งˆ๋‹ค this.state ๊ฐ’์— ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜๊ณ  console.log์— ์ž˜ ํ™•์ธ๋œ๋‹ค.

๐Ÿ“š ๊ณต๋ถ€ํ•ด์•ผํ•  ๊ฒƒ

Login.js ์˜ input์˜ ๊ฐ’์„ Routes์˜ this.state๋กœ ๋ณด๋‚ด์ฃผ์—ˆ์ง€๋งŒ, ์ด ๊ฐ’์„ ๋‹ค์‹œ Login.js์˜ props๋กœ ๊ฐ€์ ธ์™€์•ผํ•˜๋Š”๋ฐ Routes.js์˜ ์–ด๋””๋ฅผ ๊ฑด๋“œ๋ ค์•ผํ•  ์ง€ ๋ชฐ๋ผ์„œ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜์˜€๋‹ค.

=> Routes.js ๋Š” Routing์„ ์œ„ํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ ์ปดํฌ๋„ŒํŠธ์—๋Š” ๋‹จ์ผ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Login.js ์ž์ฒด์—์„œ this.state ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„๋ณด์ธ๋‹ค.
state์™€ props ์— ๋Œ€ํ•œ ์‹ฌ๋„์žˆ๋Š” ํ•™์Šต์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿ“Œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

Login ์ปดํฌ๋„ŒํŠธ์˜ this.state ๊ฐ’์— idVal, pwVal์„ ์ดˆ๊ธฐํ™”

#Login.js

class Login extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      idVal: '',
      pwVal: '',
    };
  }

id์™€ pw์˜ input์— ๊ฐ’์ด ์ž…๋ ฅ๋˜๋ฉด ์ž…๋ ฅ๋œ ๊ฐ’์ด idVal๊ณผ pwVal๋กœ ์ „๋‹ฌ๋˜์–ด ์ €์žฅ

  render() {
    return (
      <div className="loginBoard">
        <div className="logo">Westagram</div>

        <form action="" className="loginTable">
          <input
            onChange={function handleInput(e) {
              this.setState({
                idVal: e.target.value,
              });
              e.preventDefault();
            }.bind(this)}
            type="text"
            placeholder="์ „ํ™”๋ฒˆํ˜ธ, ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋˜๋Š” ์ด๋ฉ”์ผ"
            className="loginId"
          />
          <input
            onChange={function handleInput(e) {
              this.setState({
                pwVal: e.target.value,
              });
              e.preventDefault();
            }.bind(this)}
            type="text"
            placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ"
            className="loginPw"
          />

this.state์— ์ €์žฅ๋œ idVal๊ณผ pwVal ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํ™œ์„ฑํ™” ๋กœ์ง ๊ตฌํ˜„

          <Link to="/main-sejun" style={{ textDecoration: 'none' }}>
            <button
              className={
                this.state.idVal.includes('@') && this.state.pwVal.length >= 5
                  ? 'loginBtn active'
                  : 'loginBtn nonActive'
              }
            >
              ๋กœ๊ทธ์ธ
            </button>
          </Link>
        </form>

'React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React | ๋™์  ๋ผ์šฐํŒ…  (0) 2022.01.26
React | props์™€ state  (0) 2022.01.14
React | Router ์š”์•ฝ  (0) 2022.01.12
React | Routes Component & Sass  (0) 2022.01.11
React | CRA + TypeScript + Airbnb style guide ์ดˆ๊ธฐ์„ธํŒ…  (0) 2022.01.05
  1. ๐Ÿ“š ๊ณต๋ถ€ํ•ด์•ผํ•  ๊ฒƒ
  2. ๐Ÿ“Œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
'React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • React | ๋™์  ๋ผ์šฐํŒ…
  • React | props์™€ state
  • React | Router ์š”์•ฝ
  • React | Routes Component & Sass
3jun
3jun
3jun3jun ๋‹˜์˜ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
3jun
3jun
3jun
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (94)
    • ํ”„๋กœ์ ํŠธ (5)
    • Web (9)
    • JavaScript (19)
    • React (12)
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (31)
    • Git (3)
    • AWS (3)
    • TypeScript (3)
    • CS (2)
    • Error (6)
    • ํšŒ๊ณ  (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”ํ…Œ
  • Promise
  • msw ์—๋Ÿฌ
  • ์œ ํšจ์„ฑ ๋กœ์ง
  • this.props.history.push
  • msw
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ js
  • ๋ฐฑ์ค€ ์ฝ”ํ…Œ
  • outer environment
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ๋ฐฑ์ค€ js
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค js
  • react
  • ๋ฐฑ์ค€js
  • airbnb style guide
  • ๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • state
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
  • ๋ฐฑ์ค€ ์˜จ๋ผ์ธ์ €์ง€
  • JavaScript

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
3jun
React | ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํ™œ์„ฑํ™”(React๋ฅผ ์ด์šฉํ•˜์—ฌ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.