6.1.3 高阶组件的显示名
您可以在百度里搜索“深入浅出React和Redux 艾草文学(www.321553.xyz)”查找最新章节!
6.1.3 高阶组件的显示名
每个高阶组件都会产生一个新的组件,使用这个新组件就丢失掉了参数组件的“显示名”,为了方便开发和维护,往往需要给高阶组件重新定义一个“显示名”,不然,在debug和日志中看到的组件名就会莫名其妙。增加“显示名”的方式就是给高阶组件类的displayName赋上一个字符串类型的值。
以react-redux的connect为例,我们希望高阶组件的名字包含Connect,同时要包含参数组件WrappedComponent的名字,所以我们对connect高阶组件做如下修改:
function getDisplayName(WrappedComponent) {
return WrappedComponent.displayName ||
WrappedComponent.name ||
'Component';
}
HOCComponent.displayName=`Connect(${getDisplayName(WrappedComponent)})`;
上面给displayName赋值使用了ES6的模板字符串语法,注意是用反撇号`代替普通字符串的单引号或者双引号。
增加displayName的定义之后,在React Perf等工具中看到的组件类名就更有意义。例如,当我们用connect返回的结果去包裹一个叫DemoComponent的组件时,得到的新组建的displayName就是字符串Connect(DemoComponent)。 深入浅出React和Redux