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.