[javascript] MobX와 상태 관리

애플리케이션 개발 시 상태 관리는 매우 중요한 역할을 합니다. 이전에는 Redux와 같은 라이브러리를 사용하여 상태 관리를 구현했지만, 최근에는 MobX가 인기를 얻고 있습니다. MobX는 간단하고 직관적인 API를 제공하며, 리액트와 웰 연동될 수 있어 개발자들의 사랑을 받고 있습니다.

MobX란?

MobX는 자바스크립트 애플리케이션에서 상태를 관리하기 위한 상태 관리 라이브러리입니다. 상태를 관찰하고, 변경에 따라 자동으로 리액트 컴포넌트를 업데이트할 수 있습니다. MobX는 관찰 가능한 상태를 생성하고, 이와 관련된 액션을 정의하여 상태 변경을 추적합니다. 상태 변경은 업데이트 함수 내에서 이루어져 자동으로 리액트 컴포넌트를 다시 렌더링합니다.

MobX의 주요 개념

관찰 가능한 상태 (Observable State)

MobX에서는 상태를 관찰 가능한 상태로 선언합니다. 이렇게 선언된 상태는 MobX에 의해 자동으로 추적됩니다. 관찰 가능한 상태에서는 변경이 감지되면 자동으로 다른 부분에 영향을 줍니다.

액션 (Action)

액션은 상태를 변경하는 함수를 의미합니다. MobX에서는 상태를 변경할 때 액션을 사용하여 상태 변경을 추적할 수 있습니다. 액션은 상태 변경의 원인을 명확하게 파악할 수 있도록 해줍니다.

컴퓨티드 값 (Computed Value)

컴퓨티드 값은 다른 상태로부터 파생되어 업데이트되는 값입니다. 이 값은 상태의 변화에 따라 자동으로 업데이트되며, 리액트 컴포넌트에서 사용될 수 있습니다.

MobX 사용하기

MobX를 사용하기 위해선 먼저 MobX 패키지를 설치해야 합니다.

npm install mobx mobx-react

다음으로, 관찰 가능한 상태를 생성하고, 액션을 정의하여 상태 변경을 추적합니다. 다음은 간단한 카운터 예제입니다.

import { observable, action } from 'mobx';

class CounterStore {
  @observable count = 0;

  @action increment() {
    this.count++;
  }

  @action decrement() {
    this.count--;
  }
}

const counterStore = new CounterStore();

위 코드에서 count라는 관찰 가능한 상태를 생성하고, incrementdecrement라는 액션을 정의하였습니다. 이제 이 상태와 액션을 사용하여 리액트 컴포넌트를 만들 수 있습니다.

import React from 'react';
import { observer } from 'mobx-react';

const Counter = observer(({ store }) => (
  <div>
    <h1>{store.count}</h1>
    <button onClick={store.increment}>Increment</button>
    <button onClick={store.decrement}>Decrement</button>
  </div>
));

export default Counter;

위 코드에서 observer 함수를 사용하여 컴포넌트를 관찰 가능한 컴포넌트로 만들었습니다. 이제 상태 변경이 일어날 때마다 자동으로 컴포넌트가 업데이트됩니다.

결론

MobX는 간단하게 상태 관리를 할 수 있는 강력한 도구입니다. Redux처럼 복잡한 설정이 필요하지 않으며, 직관적인 API를 제공하여 개발자들이 쉽게 사용할 수 있습니다. MobX를 사용하여 애플리케이션의 상태를 관리해보세요!