2017-04-27 100 views
1

我是新的反應。我正在尋找建立一個鉻擴展,它操縱一個網站編寫的反應。當我使用反應開發工具時(鉻擴展),我可以看到完整的反應。但我不知道如何在我自己的代碼中加載反應dom。加載反應dom

因此,爲一個最小工作示例。如果我訪問facebook.com(使用react)並加載反應開發工具,我會看到一堆FluxContainer標籤,其中有很多有趣的道具(例如contextArgs,feebacktarget等)。但從javascript控制檯中,我不知道如何(a)訪問這個反應dom和(b)檢查感興趣的標籤/組件的道具。

回答

0

我不知道如果我真的瞭解你的問題,但如果你想訪問的DOM元素反應可以用ReactDom.findDOMNode(this.refs.REFNAME).optionYouWanted

例如:

import ReactDom from 'react-dom'; 

<Radio name='test' ref='First'>5</Radio> 

如果我想操縱這臺收音機,並得到例如文本,我將做

ReactDom.findDOMNode(this.refs.First).textContent (will return 5); 

您需要爲要獲取的元素賦予ref屬性

+0

[String'ref's是api api](https://facebook.github.io/react/docs/refs-and-the-dom.html#legacy-api-string-refs),現在應該被寫爲回調函數,例如' {this.radio = radio; }}> 5' –

+0

我擁有的DOM節點沒有與其關聯的ref屬性。所以,我已經加載了一個預先存在的頁面,並且我試圖訪問這些反應組件。 – Christopher

1

開發工具register a global hook稱爲__REACT_DEVTOOLS_GLOBAL_HOOK__

React本身看起來是否存在,如果是,請從ReactDOM和其他地方調用它。

+0

有趣的 - 那麼解決方案就是通過設置__REACT_DEVTOOLS_GLOBAL_HOOK__變量來欺騙開發工具並在其上實現.inject()來捕獲反應dom? – Christopher

+0

@Christopher是的,正好 –

+1

@Christopher事實上,看看它是否已經設置好了,如果是這樣,用一個函數替換它,先調用現有的函數鉤子,然後你的東西。這意味着開發工具將繼續工作 –