我有两种类型的组件,例如 a<Promo />
和 an<Announcement />
我的一个组件映射到项目列表并创建促销或公告,我如何传递 ItemElement,而不必根据 if 语句重复映射。
当前实施
import React, { Component } from 'react'
import Promo from './Promo'
import Announcement from './Announcement'
class Demo extends Component {
render() {
const { ItemElement } = this.props
let items = null
if(ItemElement === 'Promo'){
items = this.props.items.map((p, i) => (
<Promo item={p} />
))
} else if(ItemElement === 'Announcement') {
items = this.props.items.map((a, i) => (
<Announcement item={a} />
))
}
return (
{ items }
)
}
}
所需的实现不起作用
import React, { Component } from 'react'
import Promo from './Promo'
import Announcement from './Announcement'
class Demo extends Component {
render() {
// this would be 'Promo' or 'Announcement'
const { ItemElement } = this.props
let items = this.props.items.map((p, i) => (
<ItemElement item={p} />
))
return (
{ items }
)
}
}
如果我传入 a 'div'
or 'a'
or'span'
标签,这很好用,但不适用于我自己的组件?