Hooks

render props, ๊ณ ์ฐจ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ?

context, ๊ณ ์ฐจ ์ปดํฌ๋„ŒํŠธ, render props ๋“ฑ์„ ํ†ตํ•ด wrapper hell์ด ๋ฐœ์ƒ?

-> Hook์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ƒํƒœ ๊ด€๋ จ ๋กœ์ง์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๋ฐ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ

-> Hook์€ ๊ณ„์ธต์˜ ๋ณ€ํ™” ์—†์ด ์ƒํƒœ ๊ด€๋ จ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Class ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ ๊ฐ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ์— ๊ด€๋ จ ์—†๋Š” ๋กœ์ง์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ

-> ํ•˜๋‚˜์˜ ๋กœ์ง์„ ๋งŒ๋“ค๊ณ  ์‹ถ์€๋ฐ ๊ฐ ์ƒ๋ช…์ฃผ๊ธฐ ๋ณ„ ๋ฉ”์„œ๋“œ๋Š” 1๊ฐœ ๋ฐ–์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ์ด ์•ˆ์— ๊ด€๋ จ์—†๋Š” ๋กœ์ง๋„ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋‹ˆ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋‚˜ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค?

-> ์ƒํƒœ ๊ด€๋ จ ๋กœ์ง์€ ๋ฌถ์—ฌ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ž‘๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ํ…Œ์ŠคํŠธ๋„ ์–ด๋ ต๋‹ค

import React, { Component } from 'react';

class Counter extends Component {
    state = {counter: 0}
    
    componentWillMount() {
        //...
    }
    
    componentDidMount() {
        //...
    }
    
    onIncrement = () => {
    this.setState({
        counter: this.state.counter + 1
    });
    }

    onDecrement = () => {
        this.setState({
            cunter: this.state.counter - 1
        });
    }

    render() {
        return (
            <div>
                <p>{this.state.counter}</p>
                <button onClick={this.onIncrement}>+</button>
                <button onClick={this.onDecrement}>-</button>
            </div>
        )
    }
}

export default Counter;

๊ทธ๋ž˜์„œ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ชผ๊ฐœ๋Š” ๊ฒƒ๋ณด๋‹ค Hooks๋ฅผ ํ†ตํ•ด ์ž‘์€ ๋กœ์ง์„ ๋‹ด์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฌถ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ํƒ„์ƒํ•จ

Class๋Š” ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐฉ์‹์— ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค

Hooks๋ฅผ ํ†ตํ•ด Class ์—†์ด๋„ React ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋จ

Last updated