MobX integration with Wouter
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
Router for client navigation
Exports from mobx-location-history
import { MobxRouter, MobxLocation, MobxHistory, QueryParams } from "mobx-wouter";
const router = new MobxRouter({
history: //, new MobxLocation()
location: //, new MobxHistory()
queryParams: //, new QueryParams(),
abortSignal: //
})