1
0
Fork 0
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:
Henrik 2017-06-19 15:03:02 +02:00 committed by Arunoda Susiripala
parent fe77397f26
commit 7b8a4ea234
3 changed files with 8 additions and 6 deletions

View file

@ -1,4 +1,5 @@
import React from 'react'
import { getDisplayName } from './utils'
let currentChunks = new Set()
@ -55,7 +56,7 @@ export default function dynamicComponent (p, o) {
loadComponent () {
promise.then((AsyncComponent) => {
// Set a readable displayName for the wrapper component
const asyncCompName = AsyncComponent.displayName || AsyncComponent.name
const asyncCompName = getDisplayName(AsyncComponent)
if (asyncCompName) {
DynamicComponent.displayName = `DynamicComponent for ${asyncCompName}`
}

View file

@ -1,4 +1,5 @@
import React, { Component } from 'react'
import { getDisplayName } from './utils'
export default function withSideEffect (reduceComponentsToState, handleStateChangeOnClient, mapStateOnServer) {
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.')
}
function getDisplayName (WrappedComponent) {
return WrappedComponent.displayName || WrappedComponent.name || 'Component'
}
return function wrap (WrappedComponent) {
if (typeof WrappedComponent !== 'function') {
throw new Error('Expected WrappedComponent to be a React component.')

View file

@ -42,12 +42,16 @@ export function printAndExit (message, code = 1) {
process.exit(code)
}
export function getDisplayName (Component) {
return Component.displayName || Component.name || 'Unknown'
}
export async function loadGetInitialProps (Component, ctx) {
if (!Component.getInitialProps) return {}
const props = await Component.getInitialProps(ctx)
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.`
throw new Error(message)
}