Skip to content

How to not unmount components on page navigations? #972

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
4ndv opened this issue Mar 20, 2019 · 6 comments
Closed

How to not unmount components on page navigations? #972

4ndv opened this issue Mar 20, 2019 · 6 comments

Comments

@4ndv
Copy link

4ndv commented Mar 20, 2019

I have some components, that should not be unmounted during their "presence" on the page, but should be unmounted if next page doesn't have them.

How it can be done?

@4ndv
Copy link
Author

4ndv commented Mar 20, 2019

Setting id and data-turbolinks-permanent does not help:

<%= react_component("ActiveTimer", {}, class: 'active-timer-menu', 'data-turbolinks-permanent': true, id: 'active-timer-menu') %>

https://github.com/turbolinks/turbolinks/blob/master/README.md#persisting-elements-across-page-loads

@4ndv
Copy link
Author

4ndv commented Mar 20, 2019

Looks like #962 is related to this

@BookOfGreg
Copy link
Member

Yep. Looks related to the linked PR.

@4ndv
Copy link
Author

4ndv commented Mar 20, 2019

Ugly, but seemingly working temporary workaround:

Add this to your component (inspired by solution in #119, but modified for modern react):

import ReactDOM from 'react-dom'

componentDidMount () {
  ReactDOM.findDOMNode(this).parentElement.removeAttribute('data-react-class')
}

Use react_component like this (not a temporary, this way it SHOULD work, but doesn't without lines above):

<%= react_component("ComponentName", {}, 'data-turbolinks-permanent': true, id: 'unique-id-for-turbolinks') %>

@gregblass
Copy link

gregblass commented May 22, 2019

EDIT: I apologize, I should have read the docs - the javascript_pack_tag needs to come after turbolinks in the head. When I do that, it works perfectly fine for me.

@alkesh26
Copy link
Collaborator

alkesh26 commented Nov 4, 2022

Closing the issue as we have a solution.

@alkesh26 alkesh26 closed this as completed Nov 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants