采用多个组件的可重用 HOC
Reusable HOC that takes multiple components
我有这个简单的高阶组件,它工作正常,但它只接受一个组件:
let VerticalSlider = (Komponent) => {
return (props) => (
<div className='slider'>
<Komponent {...props}/>
</div>
);
};
如何重写 HOC 以接受多个组件(未知数量)和 return 它们作为兄弟姐妹(一个接一个地在彼此下面)以及它们各自的 props?
我假设这就是您调用具有多个组件的 HOC 的方式,因为它只是一个函数:
VerticalSlider(MyComponent, MyOtherComponent)
我知道如何接受和销毁未知数量的 "normal" 道具,但是当涉及到传入组件时,我却迷失在这里。
你可以这样做:
import React, { Component } from 'react';
import { render } from 'react-dom';
let VerticalSlider = (...komponents) => {
return (props) => (
<div className='slider'>
{ komponents.map((K, i) => <K {...props.ps[i]} /> ) }
</div>
);
};
const Apple = props =>
<div>{ props.name }</div>;
const Orange = props =>
<div>{ props.desc }</div>;
const MyComp = VerticalSlider(Apple, Orange);
const App = () =>
<div>
Hello
<MyComp
ps={[{ name: 'apple' }, { desc: 'orange' }]} />
</div>
render(<App />, document.getElementById('root'));
但是有点丑,你的同事会讨厌你的。保持简单,不要想太多。这是一个demo
我有这个简单的高阶组件,它工作正常,但它只接受一个组件:
let VerticalSlider = (Komponent) => {
return (props) => (
<div className='slider'>
<Komponent {...props}/>
</div>
);
};
如何重写 HOC 以接受多个组件(未知数量)和 return 它们作为兄弟姐妹(一个接一个地在彼此下面)以及它们各自的 props?
我假设这就是您调用具有多个组件的 HOC 的方式,因为它只是一个函数:
VerticalSlider(MyComponent, MyOtherComponent)
我知道如何接受和销毁未知数量的 "normal" 道具,但是当涉及到传入组件时,我却迷失在这里。
你可以这样做:
import React, { Component } from 'react';
import { render } from 'react-dom';
let VerticalSlider = (...komponents) => {
return (props) => (
<div className='slider'>
{ komponents.map((K, i) => <K {...props.ps[i]} /> ) }
</div>
);
};
const Apple = props =>
<div>{ props.name }</div>;
const Orange = props =>
<div>{ props.desc }</div>;
const MyComp = VerticalSlider(Apple, Orange);
const App = () =>
<div>
Hello
<MyComp
ps={[{ name: 'apple' }, { desc: 'orange' }]} />
</div>
render(<App />, document.getElementById('root'));
但是有点丑,你的同事会讨厌你的。保持简单,不要想太多。这是一个demo