有人可以告诉我https://final-form.org/docs/react-final-form/examples/wizard文件Wizard.js中第9行的情况吗?展开工作是如何进行的?
我认为,我确实了解React中子级的概念,但不是这样。如果我用<Wizard.Page>
更改了index.js
内的<div>
并删除了Wizard.js
中的第9行,该代码仍然有效,但是如果我只删除了{{ 1}}。
答案 0 :(得分:0)
此行定义了一个非常基本的functional component,它只是呈现其子级。
它在Wizard
类上定义为静态属性,因此可以通过Wizard.Page
进行访问。
Wizard.js
中的代码实际上并不依赖于Wizard
组件的子组件是实际的Wizard.Page
组件的事实,它只是假设子组件是组件中不同的步骤。向导:
render() {
const { children } = this.props
const { page, values } = this.state
const activePage = React.Children.toArray(children)[page]
...
}
这就是为什么当您使用<div>
而不是<Wizard.Page>
时它仍然起作用的原因:div
元素也充当子元素的包装器,并且render()
方法中的代码仍会按预期工作。
但是<Wizard.Page>
方法有几个好处:
index.js
中的代码更具可读性和明确性Wizard.Page
组件可以演变为具有更多逻辑的更复杂的组件,而无需对index.js
进行任何更改