7e2d476e44
* 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
46 lines
1.3 KiB
JavaScript
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
|