我知道findDOMNode是一個no-no,我有一種感覺,我可以擺脫它。如何重構findDOMNode出
我最近重構了我的組件,使用Button
組件代替button
標籤。現在看起來是這樣的:
<Button
ref={(input) => this.toggleZipLink = input}>
Add New Zip
</Button>
,我有我的組件的功能即會從另一個組件通過道具叫做:
shouldClickOutside(e) {
if (findDOMNode(this.toggleZipLink).contains(e.target)) {
return false;
}
return true;
}
我必須使用findDOMNode因爲this.toggleZipLink
是一個組件。如果Button
是button
我不需要它。
有沒有什麼方法可以將內部button
標籤暴露給它的父級?我注意到this.toggleZipLink有一個refs對象,但它似乎是空的。作爲參考,Button是而不是無狀態函數組件,所以它應該支持ref的。
解決方案編輯:
裏面Button
我加了REF ref={(button) => this.button = button}
。然後在父div中,我可以通過this.toggleZipLink.button
訪問它。