1

新的反应,我想知道是否有任何解决方法可以解决这个错误:

_registerComponent(...): Target container is not a DOM element.

编辑我想要做的是:

我有一个反应功能,如:

ReactDOM.render(React.createElement(someFunction,{data:someData}),document.getElementById('someID')

生成一个domlike:

<span>
    <ul data-reactid='...'>blahhh</ul>
    <div data-reactid='...'>
        <div id='some-id1' data-reactid='...'>blahhh</div>
        <div id='some-id2'data-reactid='...'>blahhhh</div>
    </div>
</span>

现在在上一个 react 调用的下一行,我有其他函数正在尝试使用上面创建的 div 做一些事情:

ReactDOM.render(React.createElement(someOtherReactFunction, { somePram: 'ImParam'}), document.getElementById('some-id1'));

这给了我:

_registerComponent(...): Target container is not a DOM element.

但我可以看到它存在于 DOM 中

那么如何访问这个虚拟 domdiv呢?并在其中加载一些内容?

PS:我知道一种方法,dangerouslySetInnerHtml但正在寻找一种更好的方法

4

1 回答 1

5

这只是javascript。是的,您可以创建 div。您只需在某个 dom 元素上注册一次即可加载所有应用程序。您应该避免在加载 React 应用程序后触摸 DOM,因为 React 以非常有效的方式执行此操作,但这并不意味着无法触摸它。在加载 React 应用程序之前,如果您必须检查应用程序容器是否存在,您可以使用以下代码执行此操作:

if (!document.getElementById("app")) {    
    var div = document.createElement("div");
    div.id = 'app';
    document.body.appendChild(div);
}

ReactDOM.render(<App />, document.getElementById('app'));
于 2016-03-22T22:43:18.280 回答