Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ReactJS:为什么要使用这个.props.children?_Reactjs - Fatal编程技术网

ReactJS:为什么要使用这个.props.children?

ReactJS:为什么要使用这个.props.children?,reactjs,Reactjs,我意识到我编写的组件中没有一个使用{this.props.children} 我倾向于按照官方文档在顶部所述的方式编写组件 是这样嵌套组件的 <A> <B /> <C /> </A> …这样做对他们有好处吗 A.js render() { <B /> <C /> } render(){ } 假设这是正确的术语,我还缺少什么?我想说,当您不知道要渲染什么时,它会很有用 例如,您有一个工具提示包

我意识到我编写的组件中没有一个使用
{this.props.children}

我倾向于按照官方文档在顶部所述的方式编写组件

是这样嵌套组件的

<A>
  <B />
  <C />
</A>

…这样做对他们有好处吗

A.js

render() {
    <B />
    <C />
}
render(){
}

假设这是正确的术语,我还缺少什么?

我想说,当您不知道要渲染什么时,它会很有用

例如,您有一个工具提示包装器,假设它是场景中的
组件,您可以使用它传递不同的内容:

<A>
    <div>Some text...</div>
    <ImageComponent />  // render an image as well
</A>

一些文字。。。
//同时渲染图像
或:


仅文本

在我的应用程序中,我很少使用this.props.children,因为我经常明确知道要渲染哪些子对象。在库中,或编写为在特定组件层次结构之外重复使用的组件中,我经常看到它。我认为this.props.children与该用例更相关

编辑:我想我应该详细介绍一下这个.props.children可以派上用场的一些案例。其中一个示例是在创建遵循“”模式的组件时。i、 我有一些组件需要从多个“渲染属性”HoC中拉入数据,例如Apollo查询组件和状态管理HoC。我将所有不同的数据源组合到一个HoC中,然后将children作为函数调用,传入提取所有所需数据的结果。尽管如此,这些天来我更喜欢并期待着更广泛地采用渲染道具

实际上,任何要呈现任意子级的组件;我使用过的另一个例子是,当创建一个HoC时,需要在呈现子对象之前对用户进行身份验证,当用户未登录时重定向到登录屏幕。我可以用这个auth HoC包装我的任何“受保护”屏幕组件


这仍然是我的大多数组件都不使用的东西,但只是在情况需要时应用的另一个工具。

一些组件事先不知道自己的孩子。这对于表示通用“框”的边栏或对话框等组件尤其常见

我们建议此类组件使用特殊的子元素道具将子元素直接传递到其输出中:

子对象是一种特殊的道具,可以从所有者传递到其渲染方法中定义的组件。它允许我们自定义组件的结构

使用props,子组件将其结构置于完全控制之下,并且只允许传递某些属性或值。组件的结构是硬编码的

在React文档中,
子属性
被描述为不透明的,因为它是一个不告诉任何关于它包含的值的属性。因此,它允许客户端/父级自定义结构


我们还可以说,组件只定义了一种基本的模板/结构,例如通过提供一种“头”。消费者通过添加子项重用此标题结构。

如果您不知道子项是什么,该怎么办?考虑一个包装器组件,它将一些样式或动作应用于它的子组件,而不管它们是什么。此外,它不是关于一个组件,更多的是关于应用程序,当你用react建立一个网站时,你会使用它好的方面,这是最有用的答案来平息我的想法。
<A>
    <div>Only text</div>
</A>