I'm using MobX @observer and @withRouter (react-router-v4) wrap page component like this
@withRouter
@inject('stores')
@observer
class Page extends Component {
render() {
return (
<div>
<NavBar />
<Header title={this.props.stores.UIStore.title} />
<Switch>
<Route exact path="/" component={HomePage} />
<Route exact path="/about" component={AboutPage} />
<Route component={NotFound} />
</Switch>
</div>
)
}
Problem
When route location change the NavBar and Header component alway re-render with same props (no any state update). react-perf show many wasted render (no props/state update) when route change.
NavBar include Link and some MobX state (NavBar wrap with @observer+@inject only)
Header is just a stateless component.
Page component require @withRouter cause of @observer (MobX) break react-router (https://github.com/mobxjs/mobx-react/issues/210)
How to prevent NavBar and Header re-render from route location change? Allow re-render only when mobx state update.