[javascript] MobX와 렌더링 최적화

MobX는 상태 관리 도구로, React와 함께 사용할 때 높은 효율성을 보여주는데요. 이번 글에서는 MobX를 사용하여 React 애플리케이션의 렌더링을 최적화하는 방법에 대해서 알아보겠습니다.

MobX란?

MobX는 다른 상태 관리 라이브러리인 Redux와 달리 간단하고 직관적인 API를 제공합니다. MobX는 어플리케이션의 상태를 관찰하고 자동으로 추적하여 변경될 때 자동으로 렌더링을 갱신합니다. 이러한 기능들을 통해 개발자는 복잡한 불변성 관리나 액션 디스패칭과 같은 작업을 신경 쓸 필요 없이 상태를 업데이트할 수 있습니다.

렌더링 최적화 기법

1. observable 사용

MobX에서는 observable이라는 함수를 사용하여 변수를 상태로 변환할 수 있습니다. 이렇게 observable로 선언된 변수는 MobX가 해당 변수를 자동으로 추적하여 상태 변경 시 렌더링을 갱신합니다. 따라서, 상태로 관리되지 않는 변수의 변경이 렌더링에 영향을 주지 않도록 주의해야 합니다.

import { observable } from 'mobx';

class Store {
  @observable count = 0;
}

2. computed 사용

computed는 MobX에서 제공하는 데코레이터로, 상태의 파생 값을 계산할 때 사용됩니다. computed를 사용하면 해당 변수는 읽기 전용으로 취급되며, 의존하는 상태가 변경될 때만 다시 계산됩니다.

import { computed } from 'mobx';

class Store {
  @observable count = 0;

  @computed get doubleCount() {
    return this.count * 2;
  }
}

3. reaction 사용

reaction을 사용하면 특정 상태의 변경에 반응하여 원하는 작업을 수행할 수 있습니다. 이를 이용하면 상태 변경에 따른 불필요한 렌더링을 방지할 수 있습니다.

import { reaction } from 'mobx';

reaction(
  () => this.count,
  (count) => {
    // count가 변경될 때마다 실행되는 콜백 함수
  }
);

결론

MobX는 간단하고 직관적인 API를 제공하여 React 애플리케이션의 상태 관리와 렌더링 최적화를 용이하게 합니다. observable, computed, reaction 등의 기능을 잘 활용하여 애플리케이션의 성능을 향상시킬 수 있습니다.