๐Ÿฑ #7 React.js - class component

๋ฐ•์ค€์„ยท2022๋…„ 10์›” 28์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
8/13
post-thumbnail

๐Ÿงฉ class component

class componet๊ฐ€ function component ๋ณด๋‹ค ๋” ์“ฐ๊ธฐ์— ์–ด๋ ต๋‹ค. ํ•˜์ง€๋งŒ function component๊ฐ€ ๋‚˜์™”์Œ์—๋„ class componet๊ฐ€ ๋” ๋งŽ์ด ์‚ฌ์šฉ๋๋‹ค.

๊ทธ ์ด์œ ๋Š”
1. ๋งŽ์€ ๊ฐœ๋ฐœ ๋ฌธ์„œ๋“ค์ด class componet๋กœ ์ž‘์„ฑ์ด ๋˜์–ด์žˆ๋‹ค.
2. ๋ฆฌ์•กํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” lifecycle function์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ ๋˜๊ฒŒ ๋งŽ๋‹ค. ๊ทผ๋ฐ lifecycle function์ด class componet์—์„œ ๋ฐ–์— ๋™์ž‘์ด ์•ˆ๋œ๋‹ค.

๊ทธ๋ž˜์„œ class componet ์‚ฌ์šฉํ•œ ๊ธฐ๊ฐ„์ด ๋” ๊ธธ์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ!! 2019๋…„ ์ดํ›„๋ถ€ํ„ฐ function component๋„ lifecycle function์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ทธ๋ž˜๋„ ์•Œ์•„์•ผ ํ•˜๋‹ˆ๊นŒ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿƒโ€โ™‚๏ธ function component => class component ๋กœ ๋ณ€๊ฒฝ

  • function component
import { useState,useEffect } from 'react';
import './App.css';
import Box from './component/Box';

function App() {
  const [counter, setCounter] = useState(0); //state
  const increase =()=>{
    setCounter(counter+1);
  };

  useEffect(()=>{
    console.log("useEffect1 Firee");
  },[]);

  useEffect(()=>{
    console.log("useEffect2 Firee", counter);
  },[counter]) //์–ด๋ ˆ์ด์˜ ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ์ฃผ์‹œํ•œ๋‹ค.
  return (
    <div>
      {console.log("render")}
      <Box num="1"/>
      <div>{counter}</div>
      <button onClick={increase}>ํด๋ฆญ!</button>
    </div>
  );
}

export default App;
  • class component
import React, { Component } from 'react'
import './App.css';
import BoxClass from './component/BoxClass';

export default class Appclass extends Component {

    constructor(props){ // constructor ๋ฆฌ์•กํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” lifecycle ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜ (์ƒ์„ฑ์ž) : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹คํ–‰๋˜์ž ๋งˆ์ž ํ•จ์ˆ˜์‹คํ–‰
        super(props)
        this.state={ // state๋ฅผ ์„ ์–ธํ•œ๋‹ค.
            counter2 : 0, //์›ํ•˜๋Š” state๋ฅผ ์„ ์–ธํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
            num:1,
            value:0
        };
    }
    /*
        function ์ปดํฌ๋„ŒํŠธ๋Š” const [counter, setCounter] = useState(0); ์ด๋Ÿฐ ์‹์œผ๋กœ state๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด
        class ์ปดํฌ๋„ŒํŠธ๋Š” state๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š”  state๋ฅผ ๋‹ค ๋„ฃ์œผ๋ฉด๋Œ
        ์œ„์™€ ๊ฐ™์ด ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค.

    */
    increase = () =>{
        this.setState({counter2:this.state.counter2 + 1 ,
                        value : this.state.value + 1
        });
        console.log("increase function", this.state);
    }
    componentDidMount(){
      // api ์ฝœ
      console.log("componentDidMount");
    }

    componentDidUpdate(){
      console.log("componentDidUpdate", this.state);
    }
  render() {
    console.log("render");
    return (
      <div>
        <div>state: {this.state.counter2}</div> {/* class ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ€๋ฅผ๋•Œ๋Š” counter2๋งŒ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด์•„๋‹ˆ๋ผ. this.state ๋ฅผ ๋งค๋ฒˆ ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค.*/}
        <button onClick={this.increase}>ํด๋ฆญ!</button>
        <BoxClass num={this.state.value}/>
      </div>
    )
  }
}

profile
์•ˆ๋…•ํ•˜์„ธ์š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ๊ธ€์„ ์ด์ „ ์ค‘์ž…๋‹ˆ๋‹ค.

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