Javascript 在react redux中从HOC创建多个请求

Javascript 在react redux中从HOC创建多个请求,javascript,reactjs,redux,react-redux,higher-order-components,Javascript,Reactjs,Redux,React Redux,Higher Order Components,我想从hoc创建多个请求,我可以为单个请求创建hoc(调用api的redux操作),请检查单个请求的代码 我创建了hoc,以减少每个组件中重复的代码,比如调用api、管理错误、管理加载状态,但它仅适用于单个请求,就像您在给定hoc的初始对象中看到的那样,因此我希望创建一个可以执行多个请求的hoc(调用api的redux操作),我不知道这个解决方案是否正确地实现了单个请求 因此,请帮助我创建可以在任何给定场景下重新密封的hoc 临时的 export const component with api

我想从hoc创建多个请求,我可以为单个请求创建hoc(调用api的redux操作),请检查单个请求的代码

我创建了hoc,以减少每个组件中重复的代码,比如调用api、管理错误、管理加载状态,但它仅适用于单个请求,就像您在给定hoc的初始对象中看到的那样,因此我希望创建一个可以执行多个请求的hoc(调用api的redux操作),我不知道这个解决方案是否正确地实现了单个请求

因此,请帮助我创建可以在任何给定场景下重新密封的hoc

临时的

export const component with apirest=({onMount=null,LoaderRequestID,onUnmount=null})=>(WrappedComponent)=>{
返回类ComponentWithAPIRESQUEST扩展组件{
状态={
stateLoader:true//初始加载
};
componentDidMount=()=>{
这个.Request();
};
组件将卸载(){
onUnmount!==null?this.props[onUnmount]():null;
}
请求=()=>{
onMount!==null?this.props[onMount](LoaderRequestID):null;//API请求
this.setState({stateLoader:false});
};
render(){
const{error,isLoading}=this.props;//以某种方式将其传递到此处。
const{stateLoader}=this.state;
const isLoadingFromAPI=this.props.isLoadingRequestIds.indexOf(LoaderRequestID)!=-1?true:false;
if(状态加载器){
返回(
);
}
如果(isLoadingFromAPI){
返回(
);
}否则{
返回;
}
}
};
};
组成部分

export const isContainer=({initial,list})=>(WrappedComponent)=>{
const IsContainer=(道具)=>;
返回组合(ComponentWithAPIREST(初始),hasRequestError)
(i容器);
};
hasRequestError//是一个错误
上面添加了ComponentWithAPIRESQUEST//组件
@isContainer({
初始:{
onMount:'FirstRequest',//是一个调用api的redux操作,这里我希望有多个请求,比如['FirstRequest','SecondRequest']
LoaderRequestID:'FirstRequestLoader',//是loader的唯一id,然后对于多个请求,它将转换为相应的请求,如['FirstRequestLoader','SecondRequestLoader']
onUnmount:'ResetLeaderBoardAll'//是组件卸载时的重新加载操作
}
})
类ComponentView扩展了组件{
render(){
返回(
);
}
}
常量mapStateToProps=(状态)=>{
返回{
州
};
};
导出默认连接(MapStateTops{
第一个请求,
第二个请求
})(组件视图);

如果我是你,我会更新你的hoc并将多个URL作为参数传递,以发送多个请求,如:

export default connect(mapStateToProps, mapDispatchToProps)(ComponentWithAPIRequest(ComponentView,
    [
       "url1", "url2" ... 
    ]));
并使用“props”或“props.requestResponses”(单个)对象将它们传递回ComponentView。然后我会像这样使用它们

const url1response = this.props.requestResponses["url1"];
在我的例子中,我会将它们存储在ComponentWithAPIRESQUEST的状态中,但您也可以使用redux并从ComponentView中的MapStateTops获取它们

export default connect(mapStateToProps, mapDispatchToProps)(ComponentWithAPIRequest(ComponentView,
    [
       "url1", "url2" ... 
    ]));
const url1response = this.props.requestResponses["url1"];