/
other.js
45 lines (41 loc) · 1.44 KB
/
other.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import React from 'react'
import { Controller, UniversalController } from 'cerebral'
import Devtools from 'cerebral/devtools'
import { Container } from '@cerebral/react'
import Page from '../components/Page'
import clock from '../modules/clock'
export default class Counter extends React.Component {
static getInitialProps({ req }) {
const isServer = Boolean(req)
// On the server we prepare the state of the application. Since
// this is a synchronous state change we just use "setState", but
// you could do other async stuff here or even use "runSequence" to
// grab and set the initial state of the application using
if (isServer) {
const controller = UniversalController({ modules: { clock } })
controller.setState('clock.lastUpdate', Date.now())
return { stateChanges: controller.getChanges() }
}
return {}
}
constructor(props) {
super(props)
// The controller will be instantiated for every page change and we only
// add the devtools if we indeed are running in the browser
this.controller = Controller({
devtools:
process.env.NODE_ENV === 'production' || typeof window === 'undefined'
? null
: Devtools({ host: 'localhost:8787' }),
modules: { clock },
stateChanges: props.stateChanges,
})
}
render() {
return (
<Container controller={this.controller}>
<Page title="Other Page" linkTo="/" />
</Container>
)
}
}