ES7 装饰器在设置了 "displayName" 的 class 上不起作用

ES7 decorator doesn't work on class with "displayName" set

我正在将 React DnD 添加到我正在构建的应用程序中,并意识到 ES7 装饰器无法使用以下语法工作(据我所知):

@DragDropContext(HTML5Backend)
export class App extends React.Component {
    ...
}
App.displayName = 'My App'

然而,如果我删除 App.displayName 行,一切正常。为什么?

如何设置显示名称属性?

由于您已经在使用 ES7 功能,因此可以使用 ES7 class properties。这些在第 0 阶段。

@DragDropContext(HTML5Backend)
export class App extends React.Component {
    static displayName = 'My App';
    //or just
    //displayName = 'My App';
}

如果您使用的是 babel,则需要使用

启用这些功能
babel --stage 0

babel --optional es7.classProperties