MobX integration with Wouter
Router for client navigation
const history = createBrowserHistory();
// const history = createMemoryHistory();
// const history = createHashHistory();
const router = createRouter({
history,
// baseUrl
// abortSignal
// useStartViewTransition
queryParams: createQueryParams({
history,
}),
});
Exports from mobx-location-history
Simple ViewModel
wrapper for pages
import { PageViewModelBase } from 'mobx-wouter';
class HomePageVM extends PageViewModelBase<{ pathParam: string }> {
@observable
accessor value = 'value';
mount() {
super.mount();
document.title = 'Home';
// do something
}
}
HOC for integration PageViewModel
with view component of React
import { ViewModelProps } from 'mobx-view-model';
import { withPageViewModel } from 'mobx-wouter';
const HomePageView = observer(({ model }: ViewModelProps<HomePageVM>) => {
return <div>{`render value - ${model.value}`}</div>
})
export const HomePage = withPageViewModel(HomePageVM)(HomePageView);
Same as withPageViewModel()
but with lazy loading view and view model