mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
Create displayName util (#2286)
This commit is contained in:
parent
fe77397f26
commit
7b8a4ea234
|
@ -1,4 +1,5 @@
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
import { getDisplayName } from './utils'
|
||||||
|
|
||||||
let currentChunks = new Set()
|
let currentChunks = new Set()
|
||||||
|
|
||||||
|
@ -55,7 +56,7 @@ export default function dynamicComponent (p, o) {
|
||||||
loadComponent () {
|
loadComponent () {
|
||||||
promise.then((AsyncComponent) => {
|
promise.then((AsyncComponent) => {
|
||||||
// Set a readable displayName for the wrapper component
|
// Set a readable displayName for the wrapper component
|
||||||
const asyncCompName = AsyncComponent.displayName || AsyncComponent.name
|
const asyncCompName = getDisplayName(AsyncComponent)
|
||||||
if (asyncCompName) {
|
if (asyncCompName) {
|
||||||
DynamicComponent.displayName = `DynamicComponent for ${asyncCompName}`
|
DynamicComponent.displayName = `DynamicComponent for ${asyncCompName}`
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import React, { Component } from 'react'
|
import React, { Component } from 'react'
|
||||||
|
import { getDisplayName } from './utils'
|
||||||
|
|
||||||
export default function withSideEffect (reduceComponentsToState, handleStateChangeOnClient, mapStateOnServer) {
|
export default function withSideEffect (reduceComponentsToState, handleStateChangeOnClient, mapStateOnServer) {
|
||||||
if (typeof reduceComponentsToState !== 'function') {
|
if (typeof reduceComponentsToState !== 'function') {
|
||||||
|
@ -13,10 +14,6 @@ export default function withSideEffect (reduceComponentsToState, handleStateChan
|
||||||
throw new Error('Expected mapStateOnServer to either be undefined or a function.')
|
throw new Error('Expected mapStateOnServer to either be undefined or a function.')
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDisplayName (WrappedComponent) {
|
|
||||||
return WrappedComponent.displayName || WrappedComponent.name || 'Component'
|
|
||||||
}
|
|
||||||
|
|
||||||
return function wrap (WrappedComponent) {
|
return function wrap (WrappedComponent) {
|
||||||
if (typeof WrappedComponent !== 'function') {
|
if (typeof WrappedComponent !== 'function') {
|
||||||
throw new Error('Expected WrappedComponent to be a React component.')
|
throw new Error('Expected WrappedComponent to be a React component.')
|
||||||
|
|
|
@ -42,12 +42,16 @@ export function printAndExit (message, code = 1) {
|
||||||
process.exit(code)
|
process.exit(code)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getDisplayName (Component) {
|
||||||
|
return Component.displayName || Component.name || 'Unknown'
|
||||||
|
}
|
||||||
|
|
||||||
export async function loadGetInitialProps (Component, ctx) {
|
export async function loadGetInitialProps (Component, ctx) {
|
||||||
if (!Component.getInitialProps) return {}
|
if (!Component.getInitialProps) return {}
|
||||||
|
|
||||||
const props = await Component.getInitialProps(ctx)
|
const props = await Component.getInitialProps(ctx)
|
||||||
if (!props && (!ctx.res || !ctx.res.finished)) {
|
if (!props && (!ctx.res || !ctx.res.finished)) {
|
||||||
const compName = Component.displayName || Component.name
|
const compName = getDisplayName(Component)
|
||||||
const message = `"${compName}.getInitialProps()" should resolve to an object. But found "${props}" instead.`
|
const message = `"${compName}.getInitialProps()" should resolve to an object. But found "${props}" instead.`
|
||||||
throw new Error(message)
|
throw new Error(message)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue