【发布时间】:2020-04-29 19:46:42
【问题描述】:
我想知道,为什么在反应中,我们经常看到表单的高阶组件:
MyComponent = withSomeHOC(params)(function MyActualCompoent(props) {
return <div/>
})
实现可能如下所示:
function withSomeHOC(params, modifier) {
function(WrappedComponent) {
return function(props) {
//do whatever to modify something based on params.
const data = modifier(React.useContext(someCTX));
return <>
<div>{data}</div>
<WrappedComponent {...props}/>
</>;
}
}
}
而不是更合乎逻辑的方法(对我来说)只是将参数作为第二个(和第三个)参数添加到高阶组件本身:
MyComponent = withSomeHOC(function MyActualComponent(props) {
return <div/>
}, params, modifier);
function(WrappedComponent, params, modifier) {
return function(props) {
//do whatever to modify something based on params.
const data = modifier(React.useContext(someCTX));
return <>
<div>{data}</div>
<WrappedComponent {...props}/>
</>;
}
}
为什么我们几乎看不到第二种方法,而几乎总是第一种?第二种的缺点是什么?一个优点是程序结构更简单,而不是深度嵌套的高阶组件和函数。
【问题讨论】:
标签: reactjs higher-order-functions higher-order-components