Skip to content

Error #3: No access to ViewModelStore

This happened because viewModels param is not provided during to creating instance ViewModelBase.

Explanation:

This can be happened if you override\implement createViewModel() method in your custom implementation of ViewModelStore or ViewModelStoreBase and forget to pass viewModels param to params for ViewModel creation.

ts
import {
  ViewModelStoreBase,
  ViewModel,
  ViewModelCreateConfig
} from 'mobx-view-model';

export class ViewModelStoreImpl extends ViewModelStoreBase {
  constructor(protected rootStore: RootStore) {
    super();
  }

  createViewModel<VM extends ViewModel<any, ViewModel<any, any>>>(
    config: ViewModelCreateConfig<VM>,
  ): VM {
    const VM = config.VM;
    const yourCustomConfig = {
      ...config,
      viewModels: undefined,
    }
    return new VM(yourCustomConfig);
  }
}

config argument in createViewModel method already should has viewModels property

Because it gets passed from <ViewModelsProvider />
Otherwise it will be undefined

Potential solution

1. Add ViewModelsProvider

Use <ViewModelsProvider /> to pass viewModels for all created VM instances in React.

Example:

tsx
export const App = () => {
  return <ViewModelsProvider value={vmStore}>...</ViewModelsProvider>;
};

1. Check your custom method createViewModel() implementation

Check that you pass viewModels param to params for ViewModel creation.

Released under the MIT License.