我想創建一個反應路由器的過渡動畫,但它似乎不起作用(沒有轉換)。ReactCSSTransitionGroup與reactJS 15和ReactRouter 4
正如你可以看到下面,所有我所做的是創建一個組件FadeRoute其使用ReactCSSTransitionGroup創建一個動畫,然後我用它的開關成分反應路由器-DOM
這裏我反應過來代碼
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import { browserHistory } from "react-router";
import ReactCSSTransitionGroup from 'react-addons-css-transition-group'
function FadeRoute({ component: Component, ...rest }) {
return (
<Route {...rest} children={({ location, match }) => (
<ReactCSSTransitionGroup
transitionName="fade"
transitionEnterTimeout={300}
transitionLeaveTimeout={300}>
<Component />
</ReactCSSTransitionGroup>
)
} />
);
}
class App extends React.Component {
render() {
return (
<Router history={browserHistory}>
<Switch>
<FadeRoute exact path="/" component={Home} />
<FadeRoute exact path="/NextComponent" component={NextComponent} />
<FadeRoute component={NoMatch} />
</Switch>
</Router>
);
}
}
ReactDOM.render(
<App />,
document.getElementById('root')
);
這裏的CSS代碼
.fade-enter {
opacity: 0.01;
}
.fade-enter.fade-enter-active {
opacity: 1;
transition: opacity 500ms ease-in;
}
.fade-leave {
opacity: 1;
}
.fade-leave.fade-leave-active {
opacity: 0.01;
transition: opacity 300ms ease-in;
}
能否請你幫我找到哪裏是PB? 感謝您提前
謝謝,如果我們把所有的開關都換掉,但是我們無法對它進行個性化設置(改變每個路徑的過渡組的類型:ex fade,s Lide ...) – MrGildarts
可能不是最優雅的解決方案,但是您可以根據Fade組件中的location prop更改您的transitionName ...現在想不到更好的方法。 – RichardY
我看到,通過在Fade組件中添加一個開關來檢查location.pathname並返回transitionName,這取決於大小寫,它可以是一個解決方案thnx – MrGildarts