본문 바로가기

React

[React 기본] 함수형 컴포넌트의 PureComponent는? memo!

PureComponent개념보러가기

 

[React 기본] PureComponent란 ? (Component, PureComponent차이)

pureComponent 하기 전에 알아야 할 개념 리액트의 데이터 하나 바뀐다고 계속되는 re-rendering 성능에 문제 없나요 ? 리액트는 state가 변화되면 전체 컴포넌트의 render 함수가 호출되는데, 단 한개라도

joannashin.tistory.com


함수형 컴포넌트의 PureComponent == memo


기존소스

import React from 'react';

const HabitAddForm = (props) => {
  const formRef = React.createRef();
  const inputRef = React.createRef();

  const onSubmit = event => {
    event.preventDefault();
    
    const name = inputRef.current.value;
    name && props.onAdd(name);

    inputRef.current.value = '';
  }

  return (
    <form ref={formRef} className="add-form" onSubmit={onSubmit}>
      <input 
        ref={inputRef}
        type="text" 
        className="add-input"
        placeholder="hello"
      />
      <button className="add-button">Add</button>
    </form>
  ); 
};

export default HabitAddForm;

 

memo로 변경한 소스

import React, { memo } from 'react';

const HabitAddForm = memo((props) => {
  const formRef = React.createRef();
  const inputRef = React.createRef();

  const onSubmit = event => {
    event.preventDefault();
    
    const name = inputRef.current.value;
    name && props.onAdd(name);

    inputRef.current.value = '';
  }

  return (
    <form ref={formRef} className="add-form" onSubmit={onSubmit}>
      <input 
        ref={inputRef}
        type="text" 
        className="add-input"
        placeholder="hello"
      />
      <button className="add-button">Add</button>
    </form>
  ); 
});

export default HabitAddForm;
사용법은 앞에 memo로 함수를 감싸주면 된다.
반응형