首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止react在路由更改时重新启动css动画

防止react在路由更改时重新启动css动画
EN

Stack Overflow用户
提问于 2021-08-21 07:42:54
回答 1查看 51关注 0票数 0

在我的react应用程序中,有一个名为SecondaryLayout.js的文件

代码语言:javascript
复制
const SecondaryLayout = ({children, className, ...rest}) => {
    
    return (
        <>
            <Sidebar />
            <main className={['seconday_layout__container', className].join('')} {...rest}>
                {children}
            </main>
        </>
    );
};

Sidebar.js:

代码语言:javascript
复制
const Sidebar = () => {
    const {user} = useSelector(state => state.auth);
    return (
        <div className="bg-white py-4 px-2 fixed h-screen shadow-lg secondary_layout__sidebar">
            <div className="h-full flex flex-col justify-between items-center">
                <Link to="/"><h1 className="font-pacifico text-white px-2.5 py-1 bg-blue-700 rounded-full text-xl -mb-5">P</h1></Link>
                <div className="flex flex-col space-y-2">
                    <NavLink to="/user/dashboard" className="px-2.5 py-1.5 rounded-lg shadow-md" activeClassName="bg-blue-700 shadow-lg text-white"><TemplateIcon className="inline w-4 h-4 -mt-1"/></NavLink>
                    <NavLink to="/user/listings" className="px-2.5 py-1.5 rounded-lg shadow-md" activeClassName="bg-blue-700 shadow-lg text-white"><ViewListIcon className="inline w-4 h-4 -mt-1"/></NavLink>
                    <NavLink to="/user/address" className="px-2.5 py-1.5 rounded-lg shadow-md" activeClassName="bg-blue-700 shadow-lg text-white"><LocationMarkerIcon className="inline w-4 h-4 -mt-1"/></NavLink>
                    <NavLink to="/user/profile" className="px-2.5 py-1.5 rounded-lg shadow-md" activeClassName="bg-blue-700 shadow-lg text-white"><CogIcon className="inline w-4 h-4 -mt-1"/></NavLink>
                </div>
                <Avatar name={user.username} image={user.image} />
            </div>
        </div>
    );
};

侧边栏有一个css动画和3个NavLinks,每次我点击一个链接,css动画就会重新启动,我想要的行为是侧边栏只淡入一次,并且即使我点击导航链接也会保持固定,我试图用React.memo()包装我的侧边栏组件,但这并没有解决这个问题

编辑:假设用户导航到/ user /dashboard或/user/profile,所有这些路由都应该始终呈现侧边栏

示例Dashboard.js

代码语言:javascript
复制
import React from 'react';

import { Helmet } from 'react-helmet';

import SecondaryLayout from '../../layouts/SecondaryLayout';

const Dashboard = () => {
    return (
        <SecondaryLayout>
            <Helmet>
                <title>My Dashboard</title>
            </Helmet>
            Dashboard
        </SecondaryLayout>
    );
};

export default Dashboard;
EN

回答 1

Stack Overflow用户

发布于 2021-08-21 08:17:25

我想我设法解决了这个问题,我所做的是通过二级布局来包装每个组件,我所做的是移动二级布局来包裹路由组件本身,而不是路由所呈现的组件,即:< route .../>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68871076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档