2017-01-30 77 views
2

是否有可能獲取虛擬DOM上的事件目標的父節點?反應事件目標父節點

在我的基本反應組件中,我有一個從onClick事件觸發的方法,我想獲得父虛擬DOM節點屬性。

handleClick(e){ 
    // The following code only gives me the actual DOM parent Node 
    ReactDOM.findDOMNode(e.target).parentNode 

} 
+0

也許會發布更多的代碼,爲什麼需要這樣做,因爲可能有更好的方法。 – noj

+0

點擊事件觸發一個模式,它的內容填充由哪個引用已被傳遞決定 –

回答

0

是的。 React適用於虛擬DOM模型,並且僅在需要時更新真實的瀏覽器DOM。 React中的事件也在虛擬DOM上工作,它們被稱爲synthetic事件。如果您發現由於某種原因需要基礎瀏覽器級別事件,則只需使用nativeEvent屬性即可獲得it

有一些制約因素作出反應虛擬DOM,你可以從here閱讀:

此外,this可能會有所幫助,並解釋了虛擬大教堂和瀏覽器的DOM之間的區別。


瀏覽器DOM只是頁面元素的抽象,React DOM是抽象的抽象。

ReactDOMrender方法是至關重要的,我們怎麼送反應的元素,以瀏覽器的DOM:

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var root = React.createElement('div'); 
ReactDOM.render(root, document.getElementById('example')); 
     ^
     |---- Where React elements from React Virtual DOM enter the Browser DOM 

在作出反應,我們正在處理的反應的元素和反應的組分。

enter image description here

由於陣營元素是一個DOM元素的虛擬表示,與事件一起使用,並抓到了父母,你需要創建一個陣營的這三種方式的組件之一:

enter image description here

要瀏覽點擊事件裏面的父母,例如,你可以檢查此:

var parent = this._reactInternalInstance._currentElement._owner._instance; 

REF:is there any way to access the parent component instance in React?http://jsfiddle.net/BinaryMuse/j8uaq85e/