mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
35 lines
868 B
JavaScript
35 lines
868 B
JavaScript
|
import React from 'react'
|
||
|
import { Provider } from 'react-redux'
|
||
|
import { reducer, initStore, startClock } from '../store'
|
||
|
import Page from '../components/Page'
|
||
|
|
||
|
export default class Counter extends React.Component {
|
||
|
static getInitialProps ({ req }) {
|
||
|
const isServer = !!req
|
||
|
const store = initStore(reducer, null, isServer)
|
||
|
store.dispatch({ type: 'TICK', light: !isServer, ts: Date.now() })
|
||
|
return { initialState: store.getState(), isServer }
|
||
|
}
|
||
|
|
||
|
constructor (props) {
|
||
|
super(props)
|
||
|
this.store = initStore(reducer, props.initialState, props.isServer)
|
||
|
}
|
||
|
|
||
|
componentDidMount () {
|
||
|
this.timer = this.store.dispatch(startClock())
|
||
|
}
|
||
|
|
||
|
componentWillUnmount () {
|
||
|
clearInterval(this.timer)
|
||
|
}
|
||
|
|
||
|
render () {
|
||
|
return (
|
||
|
<Provider store={this.store}>
|
||
|
<Page title='Other Page' linkTo='/' />
|
||
|
</Provider>
|
||
|
)
|
||
|
}
|
||
|
}
|