MobX의 멀티스토어 패턴 이해하기
MobX는 JavaScript 상태 관리 라이브러리로, React와 Angular와 함께 사용할 수 있으며 애플리케이션의 상태를 효과적으로 관리할 수 있습니다. MobX는 단일 상태 트리보다 더 복잡한 상태 관리 시나리오를 다루는 데 도움이 되는 멀티스토어 패턴을 제공합니다.
멀티스토어 패턴이란?
멀티스토어 패턴은 여러 개의 스토어를 사용하여 각 스토어의 독립적인 상태를 관리하는 방식입니다. 이 패턴은 애플리케이션의 복잡한 도메인 모델을 다룰 때 유용합니다. 각 스토어는 독립적으로 상태를 변경하고, 다른 스토어와의 데이터 연동을 통해 필요한 정보를 공유할 수 있습니다.
멀티스토어 구성하기
MobX에서 멀티스토어 패턴을 구현하려면 다음 단계를 따라야 합니다.
- 각 스토어를 개별적으로 생성합니다. 이는 MobX의
makeAutoObservable
또는makeObservable
데코레이터를 사용해 간단히 설정할 수 있습니다.
예시 코드:
import { makeAutoObservable } from "mobx";
class UserStore {
user = {};
constructor() {
makeAutoObservable(this);
}
setUser(user) {
this.user = user;
}
}
class TodoStore {
todos = [];
constructor() {
makeAutoObservable(this);
}
addTodo(todo) {
this.todos.push(todo);
}
}
const userStore = new UserStore();
const todoStore = new TodoStore();
- 각 스토어를 필요한 컴포넌트에 주입합니다. 이는 React의
Context API
를 사용하여 구현할 수 있습니다.
예시 코드:
import React from "react";
export const StoreContext = React.createContext({
userStore: new UserStore(),
todoStore: new TodoStore(),
});
export const useStores = () => React.useContext(StoreContext);
- 각 컴포넌트에서 필요한 스토어를 사용합니다. 필요한 스토어는
useStores
를 사용하여 가져올 수 있습니다.
예시 코드:
import React from "react";
import { useStores } from "./store";
const HomePage = () => {
const { userStore, todoStore } = useStores();
return (
<div>
<h1>{userStore.user.name}</h1>
<ul>
{todoStore.todos.map(todo => (
<li key={todo.id}>{todo.title}</li>
))}
</ul>
</div>
);
}
결론
MobX의 멀티스토어 패턴을 사용하면 애플리케이션의 상태 관리를 효율적으로 처리할 수 있습니다. 각 스토어의 독립적인 상태를 관리하면서 필요한 정보를 공유하고, 복잡한 도메인 모델을 다룰 수 있습니다. MobX 멀티스토어 패턴은 개발자가 애플리케이션의 규모와 요구에 맞추어 유연하게 상태 관리를 할 수 있도록 도와줍니다.
참고 문서
#TechBlog #MobX #상태관리