Я рефакторинг функционального компонента без сохранения состояния для использования branch
и renderComponent
из recompose
.
Исходный компонент выглядит так:
const Icon = props => {
const { type, name } = props
let res
if (type === 'font') {
return (<FontIcon name={name} />)
} else if (type === 'svg') {
res = (<SvgIcon glyph={name} />)
}
return res
}
Компонент с веткой выглядит так:
const isFont = props => {
const { type } = props
return type === 'font'
}
const FontIconHoC = renderComponent(FontIcon)
const SvgIconHoC = renderComponent(SvgIcon)
const Icon = branch(isFont, FontIconHoC, SvgIconHoC)
Icon.propTypes = {
type: string,
name: string
}
export default Icon
Я пытаюсь визуализировать компонент, используя:
<Icon name='crosshairs' type='font' />
В результате ошибка выглядит следующим образом:
invariant.js:44Uncaught Error: Icon(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.