什么是React组件' displayName'是用来?

时间:2017-01-11 01:03:38

标签: reactjs eslint

我知道it considered a good practice通过添加g = df.groupby('team').member g.agg(dict(members=lambda x: list(x), number='count')) members number team A [Mary, Dan] 2 B [John, Dave, Alex] 3 C [Amy] 1 D [Paul] 1 属性命名反应组件,但不知道我知道原因。在反应文档中,它说:

  

displayName字符串用于调试消息。 JSX自动设置该值;请参阅深度中的JSX。

为什么这么重要?如果我没有添加它将会发生什么? (到目前为止,我没有它,并且没有调试问题)

是否有关于如何命名组件的任何建议/良好实践?

2 个答案:

答案 0 :(得分:22)

我始终将displayName设置为与我分配给它的变量相同的名称。这只会在开发版本中使用,因为它是通过生产版本上的死代码删除而删除的,不应该依赖于您的应用程序。

至于它的使用位置,主要是在反应错误消息传递中。这就是为什么它被提到对调试有价值的原因。如果没有可以派生名称,那么当项目中包含任何超过1个组件时,错误消息默认为Component,这非常难以调试。

以下是一些在反应源中引用displayName的错误消息:

Invalid Return

Inline style error

答案 1 :(得分:1)

这篇文章对我有帮助:

How do I get string name of React Native component class?

    class CardGroup extends Component {
      render() {
        return (
          <div>{this.props.children}</div>
        )
      }
    }
    CardGroup.propTypes = {
      children: function (props, propName, componentName) {
        const prop = props[propName]

        let error = null
        React.Children.forEach(prop, function (child) {
          if (child.type !== Card) {
            error = new Error('`' + componentName + '` children should be of type `Card`.');
          }
        })
        return error
      }
    }