具有两组 children 的 React 组件
React component with two sets of children
我正在创建一个组件,它需要包含两组 children 并放置在组件的两个不同部分。
let CreditCardForm = ({icons, fields}) => (
<div>
<div className='some'>
<div className='special'>
<div className='nesting'>
{icons}
</div>
</div>
</div>
{fields}
</div>
)
let CreditCardFormUsage = () => {
let icons = () => (
<Icons>
<IconBogus/>
<IconVisa/>
<IconPaypal/>
<IconMore/>
</Icons>
)
let fields = () => (
<CreditCardFields>
<FieldCardNumber/>
<FieldName/>
<FieldExpirey/>
<FieldCCV/>
</CreditCardFields>
)
return (
<CreditCardForm icons={icons} fields={fields}/>
)
}
上面的代码应该可以工作,我的问题是是否可以根据元素本身的 children 获取那些 属性 值,并获得更自然的东西?
<CreditCardForm>
<Icons>
<IconBogus/>
<IconVisa/>
<IconPaypal/>
<IconMore/>
</Icons>
<CreditCardFields>
<FieldCardNumber/>
<FieldName/>
<FieldExpirey/>
<FieldCCV/>
</CreditCardFields>
</CreditCardForm>
是的,你可以用儿童道具来做。阅读更多@docs:
https://facebook.github.io/react/tips/children-props-type.html
当然还有 React.Children
https://facebook.github.io/react/docs/top-level-api.html#react.children
是的,this.props.children
将 return 一个数组,因此如果您总是想加载特定的子项,那么只需在包装器中通过索引引用这些子项。然后你可以把 icons
和 fields
变成包装器组件。这是一个工作 jsfiddle。看看App
的render
方法如何正是你想要的。
CreditCardForm 渲染:
<div>
<div className='some'>
<div className='special'>
<div className='nesting'>
{this.props.children[0]}
</div>
</div>
</div>
{this.props.children[1]}
</div>
字段和图标呈现:
<div>{this.props.children}</div>
应用渲染:
<CreditCardForm>
<Icons>
<IconBogus />
</Icons>
<Fields>
<FieldCardNumber />
<FieldName />
</Fields>
</CreditCardForm>
我正在创建一个组件,它需要包含两组 children 并放置在组件的两个不同部分。
let CreditCardForm = ({icons, fields}) => (
<div>
<div className='some'>
<div className='special'>
<div className='nesting'>
{icons}
</div>
</div>
</div>
{fields}
</div>
)
let CreditCardFormUsage = () => {
let icons = () => (
<Icons>
<IconBogus/>
<IconVisa/>
<IconPaypal/>
<IconMore/>
</Icons>
)
let fields = () => (
<CreditCardFields>
<FieldCardNumber/>
<FieldName/>
<FieldExpirey/>
<FieldCCV/>
</CreditCardFields>
)
return (
<CreditCardForm icons={icons} fields={fields}/>
)
}
上面的代码应该可以工作,我的问题是是否可以根据元素本身的 children 获取那些 属性 值,并获得更自然的东西?
<CreditCardForm>
<Icons>
<IconBogus/>
<IconVisa/>
<IconPaypal/>
<IconMore/>
</Icons>
<CreditCardFields>
<FieldCardNumber/>
<FieldName/>
<FieldExpirey/>
<FieldCCV/>
</CreditCardFields>
</CreditCardForm>
是的,你可以用儿童道具来做。阅读更多@docs:
https://facebook.github.io/react/tips/children-props-type.html
当然还有 React.Children
https://facebook.github.io/react/docs/top-level-api.html#react.children
是的,this.props.children
将 return 一个数组,因此如果您总是想加载特定的子项,那么只需在包装器中通过索引引用这些子项。然后你可以把 icons
和 fields
变成包装器组件。这是一个工作 jsfiddle。看看App
的render
方法如何正是你想要的。
CreditCardForm 渲染:
<div>
<div className='some'>
<div className='special'>
<div className='nesting'>
{this.props.children[0]}
</div>
</div>
</div>
{this.props.children[1]}
</div>
字段和图标呈现:
<div>{this.props.children}</div>
应用渲染:
<CreditCardForm>
<Icons>
<IconBogus />
</Icons>
<Fields>
<FieldCardNumber />
<FieldName />
</Fields>
</CreditCardForm>