React Router:如何在页面转换时为页面的单独部分设置动画

问题描述

使用反应路由器和反应过渡组,我希望能够在从一个页面过渡到另一个页面时控制页面各个部分的动画。 为了说明我的要求,以下是我想要发生的事情的完整示例。

假设我有 2 个页面页面 A 和页面 B。页面 A 有两个小节,S1 和 S2。 当我从页面 A 导航到页面 B 时,我知道我可以淡出页面 A 并淡入页面 B,如中所述 这个太有限的例子:https://reactrouter.com/web/example/animated-transitions我想要的是能够在我从页面 A 转换到页面 B 时控制 S1 和 S2 的单独退出动画。例如,当我从 A 页面切换到 B 页面时,我希望 S1 向上滑动而 S2 逐渐消失。我可以使用 React Router 和 React Transition Group 来实现这种效果吗?在页面图下方,我发布了一些代码,这是我对解决方案的初步尝试。

               Page A
|-----------------------------------|
|                                   |
|        S1                 S2      |
|   |-----------|     |-----------| |
|   |           |     |           | |
|   |           |     |           | |
|   |           |     |           | |
|   |           |     |           | |
|   |           |     |           | |
|   |-----------|     |-----------| |
|                                   |
|                                   |
|-----------------------------------|

               Page B
|-----------------------------------|
|                                   |
|                                   |
|                                   |
|                                   |
|                                   |
|                                   |
|                                   |
|                                   |
|                                   |
|                                   |
|                                   |
|-----------------------------------|

Main.js

import React from 'react'
import {browserRouter,Route,Switch} from 'react-router-dom'
import PageA from './PageA.js'
import PageB from './PageB.js/'

class Main extends React.Component {
    render() { 
        return (
        <browserRouter>
             <Csstransition key = {location.key}>
             <Switch key = {location}>
                   <Route path = "/pageA">
                        <PageA />
                   </Route>
                   <Route path = "/pageB">
                           <PageB />
                   </Route>\
             </Switch>
             </Csstransition>
        <browserRouter>
);
   }


}

PageA.js

import React from 'react'
class PageA extends React.Component
{
     render() {
         return (<div>
            <S1 />
            <S2 />
         </div>);
      }
}
export default PageA;

S1.js

import React from 'react'

class S1 extends React.Component {
     render() {
            return (<div><p>S1</p></div>);
      }

}
export default as S1;

S2.js

import React from 'react'

class S2 extends React.Component {
     render() {
            return (<div><p>S2</p></div>);
      }

}
export default as S2;

PageB.js

import React from 'react'
class PageB extends React.Component
{
     render() {
         return (<div>
            <p>Page B</p>
         </div>);
      }
}
export default PageB;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)