当我们使用ReactDOM.render(<Component/>,document.getElementById("container"));
时,组件被渲染到提到的元素。如果这里的div里面已经有了一些现有的内容怎么办?React可以将渲染组件附加到它上面吗?例如:
HTML:
<div id = "container">Hello, React!</div>
JSX:
var Component = React.createClass({
render: function(){
return(
<p>Hello to you too!</p>
)
}
})
ReactDOM.render(<Component/>, document.getElementById("container"));
6条答案
按热度按时间nr7wwzry1#
据我所知,这是做你要求的事情的唯一方法(因为我正在尝试做同样的事情):
如果有人知道一个更干净/更好的方法来将
react
组件附加到现有的<div>
,而不首先附加新的空<div>
,请插话!mhd8tkvw2#
当你在div中渲染一个react组件时,它的内容将被你创建的组件的内容所替换。
JSX
你可以在这里看到一个小提琴:JSFIDDLE
bq3bfh9z3#
你必须有一些 Package 容器来存放你不想被覆盖的东西。它应该是这样的:
pinkon5k4#
是的,使用
dangerouslySetInnerHTML
可以保留现有内容。考虑到这个名字,你可能已经猜到这不是最推荐的方法,但它有效:HTML:
JS:
看看这个fiddle,看看它的实际效果。
zu0ti5jz5#
最好的方法是创建另一个div元素,然后将其附加到容器中,然后获取Elementid并在其中呈现组件。这意味着每个渲染器都有自己的父级站在容器div中。
h9a6wy2h6#
除了其他答案,React 18警告您需要使用createRoot。
你可以通过替换ReactDom.render来修复它: