diff --git a/src/components/reactControllerFactory.js b/src/components/reactControllerFactory.js index 5e2d46a950..9611b706ee 100644 --- a/src/components/reactControllerFactory.js +++ b/src/components/reactControllerFactory.js @@ -1,13 +1,17 @@ import React from 'react'; import ReactDOM from 'react-dom'; -// TODO: Probably need to rehydrate on view restores - export default (view, params, { detail }) => { if (detail.options?.pageComponent) { + // Fetch and render the page component to the view import(/* webpackChunkName: "[request]" */ `./pages/${detail.options.pageComponent}`) .then(({ default: component }) => { ReactDOM.render(React.createElement(component, params), view); }); + + // Unmount component when view is destroyed + view.addEventListener('viewdestroy', () => { + ReactDOM.unmountComponentAtNode(view); + }); } };