提交 5a0dcbc9 编写于 作者: J JJ Kasper 提交者: Joe Haddad

Update pages-loader to return one value (#8629)

* Update pages-loader to return one value

* de-dupe page mod update also
上级 fcadad99
......@@ -13,15 +13,15 @@ const nextClientPagesLoader: loader.Loader = function() {
return `
(window.__NEXT_P=window.__NEXT_P||[]).push([${stringifiedPage}, function() {
var page = require(${stringifiedAbsolutePagePath})
var mod = require(${stringifiedAbsolutePagePath})
if(module.hot) {
module.hot.accept(${stringifiedAbsolutePagePath}, function() {
if(!next.router.components[${stringifiedPage}]) return
var updatedPage = require(${stringifiedAbsolutePagePath})
next.router.update(${stringifiedPage}, updatedPage.default || updatedPage)
next.router.update(${stringifiedPage}, updatedPage)
})
}
return { page: page.default || page }
return mod
}]);
`
}
......
......@@ -141,9 +141,10 @@ export default class PageLoader {
registerPage (route, regFn) {
const register = () => {
try {
const { error, page } = regFn()
this.pageCache[route] = { error, page }
this.pageRegisterEvents.emit(route, { error, page })
const mod = regFn()
const pageData = { page: mod.default || mod, mod }
this.pageCache[route] = pageData
this.pageRegisterEvents.emit(route, pageData)
} catch (error) {
this.pageCache[route] = { error }
this.pageRegisterEvents.emit(route, { error })
......
......@@ -195,7 +195,8 @@ export default class Router implements BaseRouter {
this.replace(url, as, options)
}
update(route: string, Component: ComponentType) {
update(route: string, mod: any) {
const Component: ComponentType = mod.default || mod
const data = this.components[route]
if (!data) {
throw new Error(`Cannot update unavailable route: ${route}`)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册