클래스형 컴포넌트

Yooncastle·2021년 9월 28일
0

🚩Intro

함수형 컴포넌트의 메소드와 클래스형 컴포넌트 메소드에서
this가 가리키는 인스턴스가 다르다.

클래스형 컴포넌트의 메소드가 이벤트로 등록될 때 메소드와 컴포넌트 인스턴스 관계가 끊김

Solution

  • constructor에서 bind
import React, { Component } from 'react';

class Counter extends Component {
  constructor(props) {
    super(props);
    this.handleIncrease = this.handleIncrease.bind(this);
    this.handleDecrease = this.handleDecrease.bind(this);
  }

  handleIncrease() {
    console.log('increase');
    console.log(this);
  }

  handleDecrease() {
    console.log('decrease');
  }

  render() {
    return (
      <div>
        <h1>0</h1>
        <button onClick={this.handleIncrease}>+1</button>
        <button onClick={this.handleDecrease}>-1</button>
      </div>
    );
  }
}

export default Counter;
  • arrow function 사용
import React, { Component } from 'react';

class Counter extends Component {
  handleIncrease = () => {
    console.log('increase');
    console.log(this);
  };

  handleDecrease = () => {
    console.log('decrease');
  };

  render() {
    return (
      <div>
        <h1>0</h1>
        <button onClick={this.handleIncrease}>+1</button>
        <button onClick={this.handleDecrease}>-1</button>
      </div>
    );
  }
}

export default Counter;

reference

https://react.vlpt.us/basic/24-class-component.html

profile
기억보단 기록을

0개의 댓글