Skip to content

ViewModelStore

An optional but powerful container for managing ViewModel instances within a React application. Provides centralized control over ViewModel lifecycle and access.

Key Features

  • Instance Registry - Automatic tracking of all active ViewModels in React tree
  • Cross-Component Access - Retrieve ViewModels by:
    • Class reference
    • React Component reference
    • Custom unique IDs
  • Factory Pattern - Unified creation interface for ViewModels

When to Use

Consider ViewModelStore when your application requires:

  • Access to ViewModels outside React hierarchy
  • Debugging/devtools inspection capabilities
  • Complex dependency injection scenarios

Basic usage

Integrate with React

tsx
import { ViewModelStoreBase, ViewModelsProvider } from "mobx-view-models";

const vmStore = new ViewModelStoreBase();

const App = () => {
  return (
    <ViewModelsProvider value={vmStore}>
      <Notifier />
    </ViewModelsProvider>
  )
}
tsx
import { ViewModelBase, withViewModel } from "mobx-view-model";

class NotifierVM extends ViewModelBase {
  foo = 'foo';
}

const NotifierView = () => {
  return <div>hello i am notifier</div>;
};

export const Notifier = withViewModel(NotifierVM, { id: 'notifier-id' })(
  NotifierView,
);

...
// somewhere in your app

vmStore.get(Notifier)?.foo // 'foo' | undefined
vmStore.get(NotifierVM)?.foo // 'foo' | undefined
vmStore.get('notifier-id')?.foo // 'foo' | undefined

Released under the MIT License.