组件定义缺少显示名称react / display-name

Dav*_*vid 15 reactjs eslint

如何为此添加显示名称?

export default () =>
  <Switch>
    <Route path="/login" exact component={LoginApp}/>
    <Route path="/faq" exact component={FAQ}/>
    <Route component={NotFound} />
  </Switch>;
Run Code Online (Sandbox Code Playgroud)

Tho*_*lle 23

将函数放在变量中,displayName在函数上进行设置,然后将其导出。

const MyComponent = () => (
  <Switch>
    <Route path="/login" exact component={LoginApp}/>
    <Route path="/faq" exact component={FAQ}/>
    <Route component={NotFound} />
  </Switch>
);

MyComponent.displayName = 'MyComponent';

export default MyComponent;
Run Code Online (Sandbox Code Playgroud)

  • @CorayThan 它主要由开发人员工具用来为您使用的组件命名。如果组件没有 `displayName` 将显示为 `&lt;Unknown /&gt;` (9认同)
  • 好吧,还有另一个问题……我为什么要关心`displayName`? (2认同)
  • 我尝试了该解决方案,但仍然收到组件定义丢失显示名称错误。这是我收到错误的地方: export default withAuthenticationRequired(DownloadCodeSamplesPage, { onRedirecting: () =&gt; &lt;LoadingSpinner /&gt; }); 在加载旋转器上。这是我的组件导出默认函数 LoadingSpinner() { return ( &lt;div className="loading"&gt; &lt;SprkBox className="data-product-loader sprk-u-AbsoluteCenter"&gt; &lt;SprkIcon extraClasses="loading sprk-c-Icon- -xxl" iconName="update" /&gt; &lt;/SprkBox&gt; &lt;/div&gt; ); } (2认同)

DeB*_*aid 22

tldr:将箭头函数切换为命名函数

显示的 Lint 错误:Component definition is missing display name react/display-name

要解决,您可以命名您的函数(IOW,不要使用箭头函数)。在此示例中,我使用react-table并传递了一个自定义组件以在单元格中呈现。

没有错误:

{
  Cell: function OrderItems({ row }) {
    return (
      <a>
        View Items
      </a>
    );
  },
}
Run Code Online (Sandbox Code Playgroud)

错误:

{
  Cell: ({ row }) => (
    <a>
      View Items
    </a>
  )
}
Run Code Online (Sandbox Code Playgroud)


Est*_*ask 12

一种在displayName不创建命名函数的情况下向匿名组件函数添加属性的方法是使用recompose

import { compose, setDisplayName } from 'recompose';

export default compose(setDisplayName('SomeComponent'))(props => ...);
Run Code Online (Sandbox Code Playgroud)

要不就:

export default Object.assign(props => ..., { displayName: 'SomeComponent' });
Run Code Online (Sandbox Code Playgroud)