Files
medusa-store/www/reference/.cache/page-renderer.js
2022-12-07 20:28:32 +01:00

43 lines
1.0 KiB
JavaScript

import React, { createElement } from "react"
import PropTypes from "prop-types"
import { apiRunner } from "./api-runner-browser"
import { grabMatchParams } from "./find-path"
// Renders page
class PageRenderer extends React.Component {
render() {
const props = {
...this.props,
params: {
...grabMatchParams(this.props.location.pathname),
...this.props.pageResources.json.pageContext.__params,
},
}
const pageElement = createElement(this.props.pageResources.component, {
...props,
key: this.props.path || this.props.pageResources.page.path,
})
const wrappedPage = apiRunner(
`wrapPageElement`,
{ element: pageElement, props },
pageElement,
({ result }) => {
return { element: result, props }
}
).pop()
return wrappedPage
}
}
PageRenderer.propTypes = {
location: PropTypes.object.isRequired,
pageResources: PropTypes.object.isRequired,
data: PropTypes.object,
pageContext: PropTypes.object.isRequired,
}
export default PageRenderer