2017-04-27 60 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事实上,看看它是否已经设置好了,如果是这样,用一个函数替换它,先调用现有的函数钩子,然后你的东西。这意味着开发工具将继续工作 –