mobx-view-model
Version:
MobX ViewModel power for ReactJS
20 lines • 1.57 kB
TypeScript
import { ComponentProps, ComponentType } from 'react';
import { LoadableMixin, LoadableConfig } from 'react-simple-loadable';
import { PackedAsyncModule } from 'yummies/imports';
import { Class, MaybePromise } from '../utils/types.js';
import { AnyViewModel } from '../view-model/index.js';
import { ComponentWithViewModel, ViewModelHocConfig } from './with-view-model.js';
export interface LazyViewAndModel<TViewModel extends AnyViewModel, TView extends ComponentType<any>> {
Model: Class<TViewModel> | PackedAsyncModule<Class<TViewModel>>;
View?: TView | PackedAsyncModule<TView>;
}
export type ComponentWithLazyViewModel<TViewModel extends AnyViewModel, TView extends ComponentType<any>> = ComponentWithViewModel<TViewModel, ComponentProps<TView>> & LoadableMixin;
export interface LazyViewModelHocConfig<TViewModel extends AnyViewModel> extends ViewModelHocConfig<TViewModel>, Pick<LoadableConfig, 'loading' | 'preload' | 'throwOnError'> {
}
/**
* A Higher-Order Component that **LAZY** connects React components to their ViewModels, providing seamless MobX integration.
*
* [**Documentation**](https://js2me.github.io/mobx-view-model/react/api/with-lazy-view-model.html)
*/
export declare function withLazyViewModel<TViewModel extends AnyViewModel, TView extends ComponentType<any>>(loadFunction: () => MaybePromise<LazyViewAndModel<TViewModel, TView>>, configOrFallbackComponent?: LazyViewModelHocConfig<NoInfer<TViewModel>> | LoadableConfig['loading']): ComponentWithLazyViewModel<TViewModel, TView>;
//# sourceMappingURL=with-lazy-view-model.d.ts.map