React "router-like" animations

43 Views Asked by At

I have a sidebar sliding menu that should act like a Router with transitions, but based on my app's state (redux) instead of routes.

The first time the menu is opened the transitions works fine. But, when I change between two inner components of the menu, there's no animations.

enter image description here

Here's the code for the component:

const SidebarInnerPages = () => {
  const { selectedPage } = useSelector((state) => state.sidebarInnerPages)

  let inner = null
  if (selectedPage === "profile") {
    inner = <ProfilePage />
  } else if (selectedPage === "settings") {
    inner = <SettingsPage />
  } else if (selectedPage === "notifications") {
    inner = <NotificationsPage />
  }

  return (
    <CSSTransition
      in={!!selectedPage}
      unmountOnExit
      timeout={600}
      classNames={{ ...styles }}
    >
      <div className={styles.innerPagesContainer}>{inner}</div>
    </CSSTransition>
  )
}

So the first time the selectedPage is changed, the menu slides in just fine. But if I switch between SettingsPage and NotificationsPage, the latter just pops in instead of being animated.

I've tried wrapping the CSSTransition with TransitionGroup with no luck.

Any ideas how to go about it?

Thanks in advance :)

0

There are 0 best solutions below