[typescript] 타입스크립트와 MobX를 연동하여 리액트 애플리케이션의 상태 관리하기

리액트 애플리케이션을 개발할 때, 상태 관리는 중요한 주제입니다. 이번 포스트에서는 타입스크립트와 MobX를 사용하여 리액트 애플리케이션의 상태를 효과적으로 관리하는 방법에 대해 알아보겠습니다.

MobX란 무엇인가요?

MobX는 상태 관리 라이브러리로, 리액트 애플리케이션에서 사용자 인터페이스의 복잡한 상태를 간단하게 관리할 수 있도록 도와줍니다. MobX는 관찰 가능한 상태, 즉 observable state를 사용하여 상태 변경을 자동으로 감지하고, 그에 따라 관련된 컴포넌트를 업데이트합니다. 이를 통해 개발자는 상태 변화에 대한 복잡한 로직을 작성할 필요 없이 간단하게 상태를 업데이트하고 반응형 컴포넌트를 만들 수 있습니다.

타입스크립트와 MobX 연동하기

1. MobX 설치

먼저, MobX를 설치합니다.

npm install mobx mobx-react

2. 상태 관리 클래스 만들기

다음으로, MobX를 사용하여 상태를 관리할 클래스를 만듭니다. 이 클래스에는 observable 상태와 이 상태를 변경하는 액션 메서드가 포함되어야 합니다.

import { makeObservable, observable, action } from 'mobx';

class CounterStore {
  count = 0;

  constructor() {
    makeObservable(this, {
      count: observable,
      increase: action,
      decrease: action,
    });
  }

  increase() {
    this.count++;
  }

  decrease() {
    this.count--;
  }
}

const counterStore = new CounterStore();
export default counterStore;

위 예제에서는 CounterStore 클래스를 만들고, count라는 observable 상태와 이를 변경하는 increasedecrease 액션 메서드를 정의했습니다.

3. 리액트 컴포넌트에서 MobX 사용하기

이제, 위에서 만든 CounterStore를 리액트 컴포넌트에서 사용하여 상태를 관리할 수 있습니다.

import React from 'react';
import { useObserver } from 'mobx-react-lite';
import counterStore from './CounterStore';

const CounterComponent: React.FC = () => {
  return useObserver(() => (
    <div>
      <p>Count: {counterStore.count}</p>
      <button onClick={counterStore.increase}>Increase</button>
      <button onClick={counterStore.decrease}>Decrease</button>
    </div>
  ));
};

export default CounterComponent;

위 예제에서는 useObserver 훅을 사용하여 CounterComponent에서 MobX 상태를 감시하고, 상태가 변경될 때 자동으로 컴포넌트를 업데이트합니다.

마무리

이제 타입스크립트와 MobX를 사용하여 리액트 애플리케이션의 상태를 효과적으로 관리하는 방법에 대해 알아보았습니다. MobX를 사용하면 복잡한 상태 관리 로직을 간단하게 처리할 수 있고, 타입스크립트를 통해 타입 안정성을 확보할 수 있습니다. 이를 통해 유지보수가 쉬운 반응형 애플리케이션을 구축할 수 있습니다.

참고 문헌: MobX 공식 문서