Do you want to request a feature or report a bug?
Feature
What is the current behavior?
There is no way to distinguish if a componentDidMount
or componentWillMount
lifecycle method was called in response to a call to ReactDOM.hydrate
.
What is the expected behavior?
I have a component that scrolls to the top of the page in componentDidMount. This makes sense when the component is first created within the client. However, it doesn't make sense when the component has been hydrated, as componentDidMount
is called after the content is already visible, and possibly after the user has already scrolled.
Would it be possible to add a componentWillHydrate
lifecycle method? Then I could do something like this to achieve the desired behavior:
componentWillHydrate() {
this.hydrated = true
}
componentDidMount() {
if (!this.hydrated) {
this.scrollToTop()
}
}
Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?
All
Hello,
Im a rookie. i would like to contribute and learn something.
How do i do that?
it would be great if you could help me out.
Thanks
@rockieroshan Watch issues tagged with "good first bug" label. Please don't post unrelated questions in other issues so we keep the discussion focused.
How about:
Call scrollToTop
in cWM or constrcutor (before you need run something like if (isClient) {...}
)
For scroll, listen the scroll event, do scrollToTop
before user see your component (give 100px or more offset)
@NE-SmallTown I've ended up doing something pretty similar 馃憤
My thought is that componentWillHydrate
would make this cleaner, as it would eliminate the need to pass isClient
(or similar) into the component via props.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contribution.
Closing this issue after a prolonged period of inactivity. If this issue is still present in the latest release, please create a new issue with up-to-date information. Thank you!
Most helpful comment
@NE-SmallTown I've ended up doing something pretty similar 馃憤
My thought is that
componentWillHydrate
would make this cleaner, as it would eliminate the need to passisClient
(or similar) into the component via props.