-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
48 lines (42 loc) · 1.16 KB
/
index.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
46
47
48
import 'babel-polyfill'
import React from 'react'
import ReactDOM from 'react-dom'
import 'sanitize.css/sanitize.css'
import './global.css'
import configureStore from './store/configureStore'
const store = configureStore()
const rootEl = document.getElementById('root')
/**
* Since we are using Redux, we don't have much component state. Thus, we do not
* need react-hot-loader and can instead use @dan_abramov-approved approach:
* "vanilla" Webpack Hot Module Replacement + conditional render function.
*/
let render = () => {
const Root = require('./containers/Root').default // eslint-disable-line global-require
ReactDOM.render(
<Root store={store} />,
rootEl
)
}
if (module.hot) {
const renderApp = render
const renderError = (error) => {
const RedBox = require('redbox-react') // eslint-disable-line global-require
ReactDOM.render(
<RedBox error={error} />,
rootEl
)
}
render = () => {
try {
renderApp()
} catch (error) {
renderError(error)
}
}
module.hot.accept('./containers/Root', () => {
// this is magic, i have no idea why we need setTimeout here
setTimeout(render)
})
}
render()