假设我有一张包含登录表单的卡片。
如何在 Card 渲染函数中访问表单中的节点?
因为我想做的是将提交按钮呈现在props.children上下文之外,而是将其包装在给定子元素之外!
<Card>
<LoginForm/>
</Card>
如何在 Card 渲染函数中访问表单中的节点?
<Form >
<input type="text" name="email"/>
<input type="password" name="password"/>
<input type="submit"/>
</Form>
因为我想做的是将提交按钮呈现在props.children上下文之外,而是将其包装在给定子元素之外!
render () {
return (
<div className="card">
<div className="inner">
{/* render Children */}
{this.props.children != undefined ?
<div className="childrenWrapper">
{this.props.children}
</div>
: ""
}
</div>
{/* render submit from login form here, not above */
</div>)
有一些组件实际上可以满足我的需求。例如来自react-toolbox的标签页组件。它们以某种方式在其他地方呈现标签页中的内容(子元素)。
举个例子。
<Tabs index={this.state.inverseIndex} onChange={this.handleInverseTabChange} inverse>
<Tab label='First'><small>First Content</small></Tab>
<Tab label='Second'><small>Second Content</small></Tab>
<Tab label='Third'><small>Third Content</small></Tab>
<Tab label='Disabled' disabled><small>Disabled Content</small></Tab>
</Tabs>
如您所见,选项卡中的子元素在自己的部分中呈现。我不想在表单上做任何更改来解决这个问题。我想将表单传递到 Card 中,并让 Card 决定如何在其渲染函数中呈现表单。
由于我正在尝试实现 Google 材质设计 组件 ,并仅将其用作模板,因此还需要拆分更多元素并将它们放置在我想要的位置。事实上,我可以将相关 HTML 放置在表单周围,以得到我想要的 Card,但那样的话我就根本不需要该组件了。