mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
![Arunoda Susiripala](/assets/img/avatar_default.png)
Earlier we add a event to init next.js when dom has loaded. But if at that time dom is already loaded, next.js won't get init ever. Now we are using domready NPM module which handle these for us.
38 lines
1 KiB
JavaScript
38 lines
1 KiB
JavaScript
import { createElement } from 'react'
|
|
import { render } from 'react-dom'
|
|
import HeadManager from './head-manager'
|
|
import domready from 'domready'
|
|
import { rehydrate } from '../lib/css'
|
|
import Router from '../lib/router'
|
|
import App from '../lib/app'
|
|
import evalScript, { requireModule } from '../lib/eval-script'
|
|
|
|
const {
|
|
__NEXT_DATA__: { component, errorComponent, props, ids, err }
|
|
} = window
|
|
|
|
domready(() => {
|
|
const Component = evalScript(component).default
|
|
const ErrorComponent = evalScript(errorComponent).default
|
|
|
|
const router = new Router(window.location.href, {
|
|
Component,
|
|
ErrorComponent,
|
|
ctx: { err }
|
|
})
|
|
|
|
// This it to support error handling in the dev time with hot code reload.
|
|
if (window.next) {
|
|
window.next.router = router
|
|
}
|
|
|
|
const headManager = new HeadManager()
|
|
const container = document.getElementById('__next')
|
|
const appProps = { Component, props, router, headManager }
|
|
|
|
rehydrate(ids)
|
|
render(createElement(App, appProps), container)
|
|
})
|
|
|
|
module.exports = requireModule
|