2015-04-01 116 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

相關問題