带成帧器运动的动画路线
animation routes with framer motion
您好,我尝试在退出时将 2 条路线的不透明度设置为 1 到 0。但出于某种原因,在 <Link>
上单击路由将发生变化(例如,'/' => '/chat?name=bob&room=here')但页面内容保持不变,并且不会呈现该特定组件路线。一旦我使用浏览器中的“返回按钮”,动画效果也很好。
有人知道为什么按钮点击不起作用吗?
App.js
return (
<div>
<Router>
<AnimatePresence exitBeforeEnter>
<Switch location={location} key={location.key}>
<Route path="/" exact component={Login}></Route>
<Route path="/chat" component={ChatRoom}></Route>
</Switch>
</AnimatePresence>
</Router>
</div>
);
Login.js
return (
<motion.div
initial="out"
animate="in"
exit="out"
variants={pageTransition}
className="Login-Container"
>
//same code
<Link
onClick={(event) => (!name || !room ? event.preventDefault() : null)}
to={`/chat?name=${name}&room=${room}`}
>
<button
type="submit"
className="Login-Button"
>
Sign In
</button>
</Link>
</motion.div>
);
ChatRoom.js
return (
<motion.div
initial="out"
animate="in"
exit="out"
variants={pageTransition}
className="ChatRoom-Container"
>
<div className="ChatRoom-NavBar">
<NavLink to="/">
<div
className="ChatRoom-BackButton"
style={{ backgroundImage: `url(${arrow})` }}
></div>
</NavLink>
</div>
</motion.div>
);
};
您在 motion.div 上的初始和退出道具似乎使用了相同的密钥,即“out”尝试为退出道具提供不同的密钥。不要忘记在进行更改时也调整您的变体。
您好,我尝试在退出时将 2 条路线的不透明度设置为 1 到 0。但出于某种原因,在 <Link>
上单击路由将发生变化(例如,'/' => '/chat?name=bob&room=here')但页面内容保持不变,并且不会呈现该特定组件路线。一旦我使用浏览器中的“返回按钮”,动画效果也很好。
有人知道为什么按钮点击不起作用吗?
App.js
return (
<div>
<Router>
<AnimatePresence exitBeforeEnter>
<Switch location={location} key={location.key}>
<Route path="/" exact component={Login}></Route>
<Route path="/chat" component={ChatRoom}></Route>
</Switch>
</AnimatePresence>
</Router>
</div>
);
Login.js
return (
<motion.div
initial="out"
animate="in"
exit="out"
variants={pageTransition}
className="Login-Container"
>
//same code
<Link
onClick={(event) => (!name || !room ? event.preventDefault() : null)}
to={`/chat?name=${name}&room=${room}`}
>
<button
type="submit"
className="Login-Button"
>
Sign In
</button>
</Link>
</motion.div>
);
ChatRoom.js
return (
<motion.div
initial="out"
animate="in"
exit="out"
variants={pageTransition}
className="ChatRoom-Container"
>
<div className="ChatRoom-NavBar">
<NavLink to="/">
<div
className="ChatRoom-BackButton"
style={{ backgroundImage: `url(${arrow})` }}
></div>
</NavLink>
</div>
</motion.div>
);
};
您在 motion.div 上的初始和退出道具似乎使用了相同的密钥,即“out”尝试为退出道具提供不同的密钥。不要忘记在进行更改时也调整您的变体。