@shopgate/engage
Version:
Shopgate's ENGAGE library.
35 lines (34 loc) • 696 B
JavaScript
import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import connect from "./connector";
/**
* The ProductProvider component.
* @return {JSX}
*/
const ProductProvider = ({
children,
productId,
provideProduct,
product
}) => {
useEffect(() => {
if (!product) {
provideProduct(productId);
}
}, [provideProduct, product, productId]);
const props = {
productId,
product
};
if (typeof children === 'function') {
return children(props);
}
return /*#__PURE__*/React.cloneElement(children, {
...props,
...children.props
});
};
ProductProvider.defaultProps = {
product: null
};
export default connect(ProductProvider);