提交 7b8a4ea2 编写于 作者: H Henrik 提交者: Arunoda Susiripala

Create displayName util (#2286)

上级 fe77397f
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}`
}
......
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.')
......
......@@ -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)
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册