当前位置: 首页 > 面试题库 >

ReactJS:为什么使用this.props.children?

孟鸿德
2023-03-14
问题内容

我意识到我编写的所有组件都不使用{this.props.children}

我倾向于按照官方文档在https://facebook.github.io/react/docs/multiple-
components.html
顶部声明的方式来编写组件。

正在像这样嵌套组件…

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

…对像这样组成它们有益吗?:

A.js

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

假设这是正确的术语,我想念的是什么?


问题答案:

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

编辑:我认为我会详细说明this.props.children可以派上用场的情况。一个这样的例子就是在创建遵循“ render
prop
”模式的组件时。即,我有一些组件需要从多个“渲染道具”
HoC提取数据,例如Apollo
Query组件以及状态管理HoC。我将所有不同的数据源组合到一个HoC中,然后将子函数作为一个函数调用,并传入了提取所需数据的结果。话虽这么说,但我最近更喜欢并期待更广泛地使用Hooks作为渲染道具的替代方法。

实际上是您想要呈现任意子代的任何组件;我使用props.children的另一个示例是在创建HoC时,该HoC需要在呈现子项之前对用户进行身份验证,并在用户未登录时重定向到登录屏幕。我可以包装任何“受保护的”屏幕组件与此auth
HoC。

我的大多数组件仍然不使用它,只是在情况允许时可以使用的另一个工具。



 类似资料:
  • 问题内容: 结合使用带有ReactJS的ES5开发,可以将组件描述如下: 在此的示例引用对象本身,这是预期的自然行为。 题 我的问题是: 如何使用ES6创建组件? 知道在JavaScript中使用new运算符时会引用实例化对象本身,因此有人可以告诉我使用bind的真正目的是什么?这和React的内部机制有关吗? 问题答案: 只是核心javascript。这是绑定事件的工作方式。这不是一个React

  • 问题内容: 我是ReactJS的新手,并安装了node.js和babel。我不清楚为什么我们在react中使用node.js和babel。 问题答案: 有多种方法可以开始使用React.js库。虽然,最方便的方法是使用Babel + Webpack。 React使用JSX语法。Babel是一个编译器,即它将JSX转换为原始JavaScript。您可以将babel视为代码和“可执行”代码之间的中间步

  • 问题内容: 我正在尝试构建一个简单的React应用程序,并且想知道为什么我需要browser.min.js文件。 我已经包含了react和react-dom.js,但是除非未包含browser.min.js,否则什么也不会显示。 问题答案: 正如您在代码段中看到的那样,script标记的类型为“ text / babel”,这是因为您正在其中使用JSX(带有XML的Javascript)进行编码。

  • Apache CouchDB是最新的数据库之一。 CouchDB具有无模式的文档模型,更适合常见应用。可支持非常大数据量查询。 使用CouchDB的主要原因是什么? CouchDB易于使用。 有一个单词可以描述CouchDB - “Relax”。 它也是组成CouchDB官方标志一个单词。 “Apache CouchDB已经开始了,现在是放松时间。” CouchDB具有基于HTTP的REST AP

  • DevOps允许敏捷开发团队实施持续集成和持续交付。这有助于他们更快地将产品推向市场。 其他一些的重要原因是: 可预测性:DevOps可以显着降低新版本的故障率 再现性:版本一切,以便可以随时恢复早期版本。 可维护性:在新版本崩溃或禁用当前系统的情况下,可以毫不费力地进行恢复。 交付/上市时间:DevOps通过简化的软件交付将上市时间缩短至50%。对于数字和移动应用尤其如此。 更高的质量:DevO

  • Akka平台提供哪些有竞争力的特性? Akka提供可扩展的实时事务处理。 Akka为以下目标提供了一致的运行时与编程模型: 垂直扩展(并发) 水平扩展(远程调用) 高容错 这个模型是唯一需要学习和掌握的,它具有高内聚和高一致的语义。 Akka是一种高度可扩展的软件,这不仅仅表现在性能方面,也表现在它所适用的应用的大小。Akka的核心——akka-actor是非常小的,可以方便地加入你的应用中,提供