Reputation: 2340
I'm creating a ScrollToTop
component by using MUI useScrollTrigger
hook https://mui.com/material-ui/react-app-bar/#usescrolltrigger-options-trigger
Here is the sample code: https://codesandbox.io/s/stackoverlow-mui-usescrolltrigger-er9z4y
ScrollTop
component doesn't appear after scrolling some pixels even after scrolling to the bottom of the page.Here is the screenshot.
The ScrollToTop
component should appear around the area I marked.
As we could see that the trigger
value from the useScrollTrigger
hook returns a false
value. It should return a true
value if we scrolled the page.
ScrollToTop
component, the ScrollToTop
component would appear. Then if we click the ScrollToTop
component, the screen would not go to the top of the page.For problem 1:
For problem 2:
ScrollToTop
component.ScrollToTop
component.ScrollTop
component appears after scrolling some pixels.ScrollTop
component should bring the screen to the top of the page after being clicked.Upvotes: 0
Views: 2455
Reputation: 21
Problem here is useScrollTrigger use the by default window as target. But in your example your main content box is having the scroll. So you need to pass the reference of this main content box as target to the useScrollTrigger.
Refer - https://stackoverflow.com/a/56743659/1133582
Something as below -
const [scrollTarget, setScrollTarget] = React.useState<Node | undefined>(undefined);
<Box ref={(node: Node) => {
if (node) {
setScrollTarget(node);
}
}} className={classes.pageOverflow}>
<Toolbar id="back-to-top-anchor" className={classes.toolbar} />
<Box className={classes.longBox}>Top Of the page</Box>
<ScrollToTop scrollTarget={scrollTarget}>
<Fab size="small" color="secondary" className={classes.scrollToTop}>
<IconKeyboardDoubleArrowUpRounded />
</Fab>
</ScrollToTop>
</Box>
Upvotes: 0