MobX를 활용한 코드의 단순화와 가독성 향상 방법

MobX는 JavaScript 애플리케이션의 상태 관리를 도와주는 강력한 상태 관리 라이브러리입니다. MobX를 사용하면 코드를 더 단순화하고 가독성을 향상시킬 수 있습니다. 이번 포스트에서는 MobX를 활용하여 코드를 단순화하고 가독성을 높이는 몇 가지 방법에 대해 알아보겠습니다.

1. Observable 상태 사용하기

Observables는 MobX에서 가장 핵심적인 개념 중 하나입니다. Observables는 감지할 수 있는 상태를 나타내며, 상태의 변화를 추적하여 해당 상태를 사용하는 코드에 자동으로 반영됩니다.

예를 들어, 다음과 같은 User 모델이 있다고 가정해봅시다.

class User {
  name = "";
  age = 0;
}

만약 이 User 모델의 name과 age를 추적하여 사용하고 싶다면, Observables을 사용하여 다음과 같이 구현할 수 있습니다.

import { observable } from "mobx";

class User {
  @observable name = "";
  @observable age = 0;
}

이제 name과 age는 Observable 상태로 정의되었으므로, 해당 상태의 변화를 추적할 수 있게 됩니다.

2. Computed 값 활용하기

Computed는 MobX에서 다른 값들을 기반으로 계산되는 파생된 값입니다. Computed를 사용하여 코드를 단순화하고 가독성을 높일 수 있습니다.

예를 들어, 다음과 같은 User 모델이 있다고 가정해봅시다.

class User {
  firstName = "";
  lastName = "";
  
  getFullName() {
    return this.firstName + " " + this.lastName;
  }
}

이 경우, getFullName()은 firstName과 lastName을 이용하여 fullName을 계산하고 반환합니다. 그러나 Computed를 활용하면 다음과 같이 코드를 개선할 수 있습니다.

import { computed, observable } from "mobx";

class User {
  @observable firstName = "";
  @observable lastName = "";
  
  @computed get fullName() {
    return this.firstName + " " + this.lastName;
  }
}

fullName은 Computed로 정의되었으므로, firstName과 lastName이 변경될 때마다 자동으로 계산되어 업데이트됩니다.

3. Reaction 활용하기

Reaction은 특정 값의 변화를 감지하여 관련 동작을 수행하는 기능입니다. Reaction을 사용하면 코드를 더욱 유연하게 작성할 수 있습니다.

예를 들어, 다음과 같은 UserStore가 있다고 가정해봅시다.

class UserStore {
  user = null;
  
  fetchUser() {
    // API 호출 등을 통해 user 정보를 가져와서 설정
    this.user = { name: "John Doe", age: 28 };
  }
  
  updateUser(newUser) {
    // user 정보 업데이트
    this.user = newUser;
  }
}

이 경우, user 값이 변경될 때마다 로그를 출력하려면 Reaction을 활용할 수 있습니다.

import { reaction, observable } from "mobx";

class UserStore {
  @observable user = null;
  
  constructor() {
    reaction(
      () => this.user, // 감지할 값의 getter 함수
      user => console.log("User 정보가 변경되었습니다:", user) // 반응할 동작
    );
  }
  
  fetchUser() {
    // API 호출 등을 통해 user 정보를 가져와서 설정
    this.user = { name: "John Doe", age: 28 };
  }
  
  updateUser(newUser) {
    // user 정보 업데이트
    this.user = newUser;
  }
}

이제 user 값이 변경될 때마다 로그가 출력됩니다.

결론

MobX를 활용하면 코드의 단순화와 가독성을 향상시킬 수 있습니다. Observable, Computed, 그리고 Reaction을 올바르게 활용하여 상태 관리 코드를 깔끔하고 유지보수가 쉬운 형태로 작성할 수 있습니다.

#MobX #상태관리