-
Notifications
You must be signed in to change notification settings - Fork 30
Open
Description
According to this line a react component will only mount if the innerHTML is empty.
// javascript/webpacker_react-npm-module/src/index.js:72
if (node.innerHTML.length === 0) this.render(node, component)This works well for initial page loads that are not rendered via the Turbolinks cache, but components will not re-mount after navigating around an app that utilize Turbolinks caching. This can be replicated with the following steps:
- Use
react_componentonpage onewhich mount's just fine. - Click link to visit
page two.page one's html is cached, the component is unmounted andpage twois rendered. - Click the back button,
page oneis rendered from the Turbolinks cache and the component will not be re-mounted as the components innerHTML is not empty
This is not noticeable for simple components that render static text, but becomes immediately apparent if a component that changes state over time (showing the current time, polling for new data, etc.).
Is there a reason for ensuring innerHTML is empty before mounting a component? Or perhaps the components should be un-mounted on turbolinks:before-cache to avoid being cached all together?
guigs, stevehanson and gabdorf
Metadata
Metadata
Assignees
Labels
No labels