2015-04-01 50 views
5

我想为我的一些部件提供很好的错误信息,等反应呢,例如:如何在React中获取父组件的名称?

警告:在阵列中的每个孩子都应该有一个唯一的“钥匙”的道具。 检查MyComponent的渲染方法。查看fb.me/react-warning-keys了解更多信息。

此消息提供有关错误上下文的一些信息。我知道我可以在调试器中找到它,但是我想让我和我的其他程序员更容易调试。

+0

你有这个需要吗? React组件根据所收到的属性及其内部状态进行操作,而不是根据它们所属的层次结构进行操作。不确定打印父组件是否有助于调试, – Cristik 2015-04-01 14:26:39

+0

我创建了一个用于处理Promise的组件。我喜欢它,但是我最终在任何地方都使用它,所以我想改进它的错误处理。 – mik01aj 2015-04-01 14:39:25

+0

我假设承诺处理程序是由父组件发送的,如果是这种情况,那么因为大多数问题都来自处理程序,并且这些处理程序位于父级别,所以您知道自己在哪里。 – Cristik 2015-04-01 14:46:16

回答

1

虽然目前还不清楚你会如何使用这与您在留言中提到一个Promise组件,你可以试试这个:

var componentName = this.constructor.displayName || this.constructor.name || undefined; 

它由ReactJS代码,着眼于构造this功能的启发在React元素验证期间创建一个名称。

但是,如果你想要一个父母的名字,这是不可能通过任何文件化的手段,并可能会脆弱,如果你建立的代码取决于具体的内部实现。这是一种单向的信息流,因此孩子不需要通过正常架构与父母建立联系。

如果您需要父母名称,您需要获取该值,并将其传递给儿童,而我确定这些儿童不需要。

+1

'this.constructor.displayName'打印这个组件的名称(这很好,但不是我想要的,因为我想要父对象),并且'constructor.name'对我来说总是'Window'(最有可能你的意思是' this.constructor.name'那里)。 – mik01aj 2015-04-02 09:48:14

+0

陷阱。我不明白你想要父母的价值是什么,因为它没有在你的问题中描述(这个例子显示了我提供的)。我已经更新了我的回答,说使用任何支持的方法都是不可能的。 – WiredPrairie 2015-04-02 10:36:25

相关问题