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