【发布时间】:2015-10-18 14:03:42
【问题描述】:
我有一种需要,但我似乎无法克服它。
因为我的页面同时使用模板渲染和反应...我有这个 div 有一个 id,让我们说 'foo'。
现在,我想获取“foo”的内容,然后用 foo 的内容渲染我的组件。我的 React 组件需要有一定的外观,但页面模板有另一个......这有意义吗?
即。
页面呈现如下:
<div id="foo">
<ul>
<li>Item One</li>
<li>Item two</li>
</ul>
</div>
然后在我的 jsx 文件中,我有:
var fooElem = document.getElementById('foo');
var contents = fooElem && fooElem.innerHTML || '';
if(fooElem) {
React.render(
<MyCOMPONENT data={contents} />,
fooElem
);
}
我认为只需获取 div 的 innerHTML,然后在其中渲染一个组件,其中包含围绕我抓取的“innerhtml”的“新”组件内容,这将是一件容易的事情。如您所见,我采用了“数据”道具,并在我的组件中使用它再次将其吐出,但格式不同。等等......“foo” div 是由后端返回的,所以除了“尝试获取 innerHTML,操作它,并将组件渲染到该空间......”之外,我无法更改它。
任何帮助将不胜感激。
我收到元素已被修改的错误等等..并且似乎只是进入某种循环。
【问题讨论】:
-
如果你可以访问 HTML 和 innerHTML,为什么不在 React 中重新编码呢?你正在尝试做的似乎是一个非常糟糕的反模式。
-
为什么它是反模式?这似乎是 React 应该能够处理的正常操作。我可以访问它,但我无权访问决定内容的因素。
-
抱歉 - 我以为您的意思是您可以完全访问实际创建
foo中的内容。当你渲染 React 组件时,你是想把它放在foo旁边,还是应该替换foo? -
好吧,我想基本上把内容插入到我的组件中,然后让我的组件渲染到 div foo。基本上,获取 foo 的内容——将该内容放入我的组件中,然后将我的组件呈现给 elem foo。因此,用户只会看到“相同的东西”,但样式会有所不同。