###push(path)メソッドでルーティングするさいに、CSSTransitionを適応するには。
お世話になっております。
私は「push()メソッドでルーティングする」とき「前のコンポーネントがフェードアウトしたあとで遷移する」ような動作を実現したいと思いました。
そして公式のサイトを参考に(https://reactcommunity.org/react-transition-group/css-transition)
以下のようなコードを作りました。
react
1 2export default function Town(props) { 3 const [inProp, setInProp] = useState(true); 4 5 //略 6 return ( 7 <CSSTransition in={inProp} timeout={2000} classNames="my-node"> 8 <div className="Town" onClick={(e) => { 9 setInProp(false); 10 store.dispatch(push(path));//実際にはactioncreatorるが使っているが便宜的に・・・ 11 }}> 12 //子要素 13 </div> 14 </CSSTransition> 15 ); 16}
css
1.my-node-exit { 2 opacity: 1; 3} 4.my-node-exit-active { 5 opacity: 0; 6 transition: opacity 200ms; 7}
しかしこれを実行しても、ただ遷移するだけでアニメーションは適応されませんでした。
おそらく再レンダーされる前に遷移されてしまうからだと思うのですが、だとしたらどうすればpush()メソッドでCSSTransitionを適応できるのでしょう?
一応react-routerとともにアニメーションするのも見つけたのですが
(https://reactcommunity.org/react-transition-group/with-react-router)
私はpush()メソッドでルーティングしているので参考になりませんでした。
これはどうすればいいのでしょうか?アドバイス、または参考となるサイトだけでもいいので、教えていただけると助かります。
あなたの回答
tips
プレビュー