Я хотел бы иметь интеллектуальный компонент / контейнер, который обрабатывает операции CRUD для объекта Product, и у меня есть следующий код:
function productContainerRender(WrappedComponent) {
return class extends React.Component {
constructor(props) {
super(props);
this.fetchProducts = this.fetchProducts.bind(this);
}
fetchProducts = (page) => {
this.props.dispatch(fetchProductsBegin());
productsApi.getAll(page)
.then(response => {
if (response.data) {
this.props.dispatch(fetchProductsSuccess(response.data._embedded.companies));
} else {
this.props.dispatch(fetchProductsFailure({message: "Fetching products failed"}));
}
});
};
componentDidMount() {
// this.fetchProducts(1);
}
render() {
// ... and renders the wrapped component with the fresh data!
// Notice that we pass through any additional props
return <WrappedComponent {...this.props} fetchProducts={this.fetchProducts} />;
}
}
}
const productSelector = createSelector(
state => state.products,
items => items,
loading => loading,
error => error,
);
const mapStateToProps = createSelector(
productSelector,
(products) => ({
products,
})
);
const ListProducts = productContainerRender(
ListProductComponent
);
const AddProduct = productContainerRender(
AddProductComponent
);
export default connect(mapStateToProps)(ListProducts,AddProduct);
Когда я пытаюсь вызвать компонент приложения, он всегда отображается
Любая идея, как сделать так, чтобы я мог экспортировать оба ListProducts, AddProduct и звонить из любого места в приложении.