rsnext/examples/with-overmind/pages/_app.js
Tim Neutkens 7e2d476e44
Update examples to use getStaticProps where possible (#11136)
* Remove micro example

* Remove page that uses getInitialProps

* Update with-docker example

* Update dynamic import example

* Update Fela example

* Update Flow example

* Update framer motion example

* Remove freactal example

* Remove with-higher-order-component

* Remove with-immutable-redux-wrapper as it shows avenues to performance issues

* Remove example that doesn't have usage

* Update with-kea

* Remove example that is not used

* Update next-page-transitions example

* Remove next-routes example as dynamic routes are supported by default

* Add link to documentation

* Update Overmind example

* Update pretty-url-routing example

* Remove update with low usage

* Update with-react-ga example

* Update React Helmet example

* Remove mobile-detect from carousel example

* Remove react-useragent as it shows a bad practice

* Remove react-uwp example as it has low usage

* Remove recompose example as it shows outdated practices

* Remove refnux example as it has low usage

* Remove example that can be created using api routes

* Update with-segment-analytics

* Update socket.io example

* Remove socket.io example as it's shows bad practices

* Update static export example

* Update universal configuration example
2020-03-17 15:07:27 +01:00

46 lines
1.3 KiB
JavaScript

import React from 'react'
import App from 'next/app'
import { createOvermind, createOvermindSSR, rehydrate } from 'overmind'
import { Provider } from 'overmind-react'
import { config } from '../overmind'
class MyApp extends App {
// CLIENT: On initial route
// SERVER: On initial route
constructor(props) {
super(props)
const mutations = props.pageProps.mutations || []
if (typeof window !== 'undefined') {
// On the client we just instantiate the Overmind instance and run
// the "changePage" action
this.overmind = createOvermind(config)
this.overmind.actions.changePage(mutations)
} else {
// On the server we rehydrate the mutations to an SSR instance of Overmind,
// as we do not want to run any additional logic here
this.overmind = createOvermindSSR(config)
rehydrate(this.overmind.state, mutations)
}
}
// CLIENT: After initial route, on page change
// SERVER: never
componentDidUpdate() {
// This runs whenever the client routes to a new page
this.overmind.actions.changePage(this.props.pageProps.mutations || [])
}
// CLIENT: On every page change
// SERVER: On initial route
render() {
const { Component } = this.props
return (
<Provider value={this.overmind}>
<Component />
</Provider>
)
}
}
export default MyApp