React中props.children跨组件传递的原理疑问
关于React中props.children传递逻辑的解惑
核心结论很简单:你看到Container渲染的是最初传给Page的h2和三个p标签,是因为props.children就是组件标签内部嵌套的所有内容,不是嵌套内容的“子内容”,你的代码只是把这部分内容原封不动地传递了下去。
分步拆解你的代码逻辑:
- 当你使用Page组件时,写法大概是这样的:
<Page title="示例页面"> <h2>页面标题</h2> <p>段落内容1</p> <p>段落内容2</p> <p>段落内容3</p> </Page>
这时候Page组件的props.children就是<h2>加上三个<p>的完整集合——也就是你写在<Page>标签里的所有东西,没有所谓的“子内容”拆分。
你在Page组件里返回
<Container>{props.children}</Container>,这一步相当于把Page拿到的那整个h2+p的集合,原封不动传给了Container的props.children,没有做任何提取或修改。最后Container组件返回
<div>{props.children}</div>,自然就把接收到的完整h2+p集合渲染到div里,所以最终显示的就是最初传给Page的内容。
你的误区在于误以为要传递“Page的props.children的子内容”,但实际上你并没有对Page的props.children做任何拆解操作——你只是直接把整个children传递给了Container。如果真的想让Container拿到Page children的子元素,你需要在Page里用React.Children API遍历提取,但你现在的代码逻辑就是完整传递,所以结果就是原样渲染。
内容的提问来源于stack exchange,提问作者k1ttyd3v
相关产品推荐
相关产品推荐

