首先,有一个与此类似的问题。我故意选择了一个类似的标题,但这个问题略有不同。
我有一些服务器端渲染的 React 代码。它给了我这样的 HTML:
<main>
<article>
<h2>Lorem ipsum</h2>
<p>dolor sit amet</p>
</article>
<article>
<h2>Lorem ipsum</h2>
<p>dolor sit amet</p>
</article>
<article>
<h2>Lorem ipsum</h2>
<p>dolor sit amet</p>
</article>
</main>
我目前正在实施部分补水,即。我没有在我的页面上安装一个安装在某个根元素上的大型 React 应用程序,而是仅使用相应的组件来补充页面的某些部分。
这意味着我有一个<Article>
这样的组件
function Article() => (
<article>
<h2>Lorem ipsum</h2>
<p>dolor sit amet</p>
</article>
)
我在第一篇文章中安装,即。
const container = document.querySelector('main > article:first-child');
ReactDOM.hydrate(<Article />, container);
我希望这会水合第一个<article>
元素而留下其余的元素,这是可行的,除了使用和水合<article>
元素ReactDOM
实际上安装在<Article />
DOM 元素内部,从而产生以下 HTML:
<main>
<article>
<article>
<h2>Lorem ipsum</h2>
<p>dolor sit amet</p>
</article>
</article>
^ -- <article> inside <article>, not cool
<article>
<h2>Lorem ipsum</h2>
<p>dolor sit amet</p>
</article>
<article>
<h2>Lorem ipsum</h2>
<p>dolor sit amet</p>
</article>
</main>
现在我想知道是否有任何方法可以ReactDOM
使用该容器而不是插入其中。