如何更改 React 中高阶组件的过滤方法?
How to change the filter method of a higher order component in React?
当用 HOC 包装组件时,我将如何更改组件的过滤方法?例如假设:
const LoaderHOC = (WrappedComponent) => {
return class LoaderHOC extends Component{
render(){
<WrappedComponent {...this.props} />
}
}
}
export default LoaderHOC;
现在有一个无状态组件,类似于这样的东西:
const Results = props =>
<div>
{props.results.filter(item<20).map((item,index)=>
<div>
<SomeOtherComponent/>
</div>
)}
</div>;
export default Results;
现在我是否可以通过使用 HOC 将结果组件中的 filter(item<20)
更改为 filter(item=20)
之类的东西?
您可以通过传递比较函数来做到这一点
const defaultComparator = (item) => {
return item > 20;
}
const FilterHOC = (Component, comparator=defaultComparator) => {
return (props) => {
<div>
{props.results.filter(comparator).map((item,index)=>
<div>
<Component/>
</div>
)}
</div>;
}
}
然后你就可以像
一样使用它了
const Comp = FilterHOC(SomeOtherComponent, (item) => {
return item === 20
})
当用 HOC 包装组件时,我将如何更改组件的过滤方法?例如假设:
const LoaderHOC = (WrappedComponent) => {
return class LoaderHOC extends Component{
render(){
<WrappedComponent {...this.props} />
}
}
}
export default LoaderHOC;
现在有一个无状态组件,类似于这样的东西:
const Results = props =>
<div>
{props.results.filter(item<20).map((item,index)=>
<div>
<SomeOtherComponent/>
</div>
)}
</div>;
export default Results;
现在我是否可以通过使用 HOC 将结果组件中的 filter(item<20)
更改为 filter(item=20)
之类的东西?
您可以通过传递比较函数来做到这一点
const defaultComparator = (item) => {
return item > 20;
}
const FilterHOC = (Component, comparator=defaultComparator) => {
return (props) => {
<div>
{props.results.filter(comparator).map((item,index)=>
<div>
<Component/>
</div>
)}
</div>;
}
}
然后你就可以像
一样使用它了const Comp = FilterHOC(SomeOtherComponent, (item) => {
return item === 20
})