如何为Title组件命名?我在它下面尝试了Title.displayName我收到了一个错误。
class Menu extends Component {
static Title = ({ children, handleTabClick }) => {
return (
<div className="title" onClick={handleTabClick}>
{children}
</div>
);
};
//Title.displayName = 'title' //won't work
render() {
return React.Children.map(this.props.children, child =>
React.cloneElement(child)
)
}
}
除非我在课外宣布标题,否则我不知道如何给它起名字。
答案 0 :(得分:1)
函数name
和displayName
属性用于调试目的,并非必要。通常可以忽略它们而不是更精简的代码。
如果需要name
,可以是:
class Menu extends Component {
static Title = function Title({ children, handleTabClick }) {
return (
<div className="title" onClick={handleTabClick}>
{children}
</div>
);
};
...
或者只是:
class Menu extends Component {
static Title({ children, handleTabClick }) {
return (
<div className="title" onClick={handleTabClick}>
{children}
</div>
);
}
...
name
足以进行调试,displayName
is non-standard默认情况下并不在大多数浏览器中使用。
可以通过装饰器方便地将属性分配给静态方法(如果这是实例方法,它的分配方式可能会有所不同):
function displayName(name) {
return (target, prop, descriptor) => {
target[prop].displayName = name;
};
}
class Menu extends Component {
@displayName('Title')
static Title({ children, handleTabClick }) {
return (
<div className="title" onClick={handleTabClick}>
{children}
</div>
);
}
...