反应 CSSTransition 不过渡
React CSSTransition not transitioning
我正在使用 react-transition-group 并且正在呈现代码,但页面没有随动画一起过渡。如果重要的话,我正在使用来自 react-router-dom 的 Link 和 NavLink。
我试过延长 timeOut 以查看 DOM 更改无济于事。我已经多次重构代码,假设我的代码一定是错误的,但无济于事。我试过 react-transition-group-v2 但发现大多数在线资源仍在使用 v1,试图按照他们的指示无济于事。 Latest example。还在迷茫。
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import { ParallaxProvider } from 'react-scroll-parallax';
import { request_page } from "./data/fetch_data.js";
import { TransitionGroup, CSSTransition } from "react-transition-group";
// global components
import Navigation from "./components/Header/Navigation.js";
import Work_With_Us from "./components/Global/Work_With_Us_Button.js";
// routes
import Home from './pages/Home';
import Work from './pages/Work';
import Case_Study from './pages/Case_Study';
import About from './pages/About';
class App extends Component {
render() {
return (
<Router>
<div className="site-contain">
<Navigation />
<Work_With_Us />
<TransitionGroup>
<CSSTransition key={location.key} classNames="page" timeout={30000}>
<Switch location={location}>
<ParallaxProvider>
<Route exact path='/' component={Home}/>
<Route path='/work/:case_study' component={Case_Study} />
<Route path='/work' component={Work}/>
<Route path='/about' component={About}/>
</ParallaxProvider>
</Switch>
</CSSTransition>
</TransitionGroup>
</div>
</Router>
);
}
}
export default App;
这是因为每次路线更新时location.key都会不断变化。
因此,要解决此问题,您可以尝试使用 this.props.location.pathname 而不是 this.props.location.key。类似于 const currentKey = location.pathname.split('/')[1] || '/'
工作示例:https://codesandbox.io/s/4RAqrkRkn?view=preview
GitHub 上也有一个问题,有更多的例子和方法,检查一下:https://github.com/ReactTraining/react-router/issues/5279
干杯!
我正在使用 react-transition-group 并且正在呈现代码,但页面没有随动画一起过渡。如果重要的话,我正在使用来自 react-router-dom 的 Link 和 NavLink。
我试过延长 timeOut 以查看 DOM 更改无济于事。我已经多次重构代码,假设我的代码一定是错误的,但无济于事。我试过 react-transition-group-v2 但发现大多数在线资源仍在使用 v1,试图按照他们的指示无济于事。 Latest example。还在迷茫。
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import { ParallaxProvider } from 'react-scroll-parallax';
import { request_page } from "./data/fetch_data.js";
import { TransitionGroup, CSSTransition } from "react-transition-group";
// global components
import Navigation from "./components/Header/Navigation.js";
import Work_With_Us from "./components/Global/Work_With_Us_Button.js";
// routes
import Home from './pages/Home';
import Work from './pages/Work';
import Case_Study from './pages/Case_Study';
import About from './pages/About';
class App extends Component {
render() {
return (
<Router>
<div className="site-contain">
<Navigation />
<Work_With_Us />
<TransitionGroup>
<CSSTransition key={location.key} classNames="page" timeout={30000}>
<Switch location={location}>
<ParallaxProvider>
<Route exact path='/' component={Home}/>
<Route path='/work/:case_study' component={Case_Study} />
<Route path='/work' component={Work}/>
<Route path='/about' component={About}/>
</ParallaxProvider>
</Switch>
</CSSTransition>
</TransitionGroup>
</div>
</Router>
);
}
}
export default App;
这是因为每次路线更新时location.key都会不断变化。
因此,要解决此问题,您可以尝试使用 this.props.location.pathname 而不是 this.props.location.key。类似于 const currentKey = location.pathname.split('/')[1] || '/'
工作示例:https://codesandbox.io/s/4RAqrkRkn?view=preview
GitHub 上也有一个问题,有更多的例子和方法,检查一下:https://github.com/ReactTraining/react-router/issues/5279
干杯!