Может использоваться вместо if..else
или троичного оператора, где предпочтительна композиция функций.Recompose предоставляет состав функции для компонентов React.Как и другие Рекомендовать компоненты более высокого порядка , branch
HOC может быть составлен с compose
:
const fooPredicate = ({ type }) => (type === 'foo');
const FooHOC = Comp => props => <Comp ...props>Foo</Comp>;
const BarHOC = Comp => props => <Comp ...props type="bar">Bar</Comp>;
const FooOrBarHOC = branch(fooPredicate, FooHOC, BarHOC);
const SomeHOC = compose(BazHOC, FooOrBarHOC);
const SomeExampleComponent = SomeHOC(ExampleComponent);
Все функции, включенные в SomeExampleComponent
, могут использоваться повторно и могут быть протестированы и использованыотдельно друг от друга.
В случае, если случай прост, и эти функции не предполагается использовать с каким-либо компонентом, кроме ExampleComponent
, его можно упростить до:
const SomeExampleComponent = BazHOC(props => (
props.type === 'foo'
? <ExampleComponent ...props>Foo</ExampleComponent>
: <ExampleComponent ...props type="bar">Bar</ExampleComponent>
));