React Dev工具将我的Component显示为Unknown

时间:2017-04-17 20:19:03

标签: reactjs google-chrome-devtools

我有以下简单的组件:

import React from 'react'
import '../css.scss'

export default (props) => {
  let activeClass = props.out ? 'is-active' : ''
  return (
    <div className='hamburgerWrapper'>
      <button className={'hamburger hamburger--htla ' + activeClass}>
        <span />
      </button>
    </div>
  )
}

当我在react开发工具中查找它时,我看到:

enter image description here

这是因为我需要扩展React组件吗?我是否需要将其创建为变量并执行此操作?

4 个答案:

答案 0 :(得分:44)

将匿名函数导出为组件时会发生这种情况。如果您命名函数(组件)然后将其导出,它将正确显示在React Dev Tools中。

const MyComponent = (props) => {}
export default MyComponent;

答案 1 :(得分:5)

我知道原来的问题已经正确回答了,但是我只是想指出如果使用React.memo()或类似的函数,您可能会遇到一个非常类似的问题。考虑以下代码:

const MyComponent = React.memo(props => <div>Hello</div>)
export default MyComponent

该组件在devtools和某些React错误消息(例如,道具类型验证)中仍将显示为Anonymous

确保在尝试记忆之前定义了组件,可以解决此问题,例如:

const MyComponent = props => <div>Hello</div>
export default React.memo(MyComponent)

答案 2 :(得分:2)

要添加到Michael Jaspers答案中,如果要使用命名导入(而不是默认导出),可以这样做:

const MyComponent = props => <div />
export { MyComponent }

该组件将以正确的名称显示在React DevTools中。

注意:如果您直接导出了表达式:

export const MyComponent = props => <div />

然后在React DevTools中显示为AnonymousUnknown

答案 3 :(得分:0)

如Michael所说,当前没有办法在不导出功能之前在devtools检查器中将其显示为<Unknown>的情况下进行更改。但是,如果这个github问题得到解决,将来可能会出现。

https://github.com/facebook/react-devtools/issues/1294