当 ReactJS Tabs 切换时,tab 内容加载时间过长可能会导致滑动动画卡顿。为了解决这个问题,可以考虑使用异步加载的方式,将 tab 内容进行分块加载,避免卡住 tab 滑动动画。

以下是一个可能的解决方案:

  1. 将 tab 内容进行分块加载,可以使用 React.lazySuspense 组件来实现。例如,将每个 tab 的内容封装在一个单独的组件中,并使用 React.lazySuspense 组件进行异步加载。
const TabContent1 = React.lazy(() => import('./TabContent1'));
const TabContent2 = React.lazy(() => import('./TabContent2'));
const TabContent3 = React.lazy(() => import('./TabContent3'));
  1. 在 Tab 组件中,使用 React.lazySuspense 组件包裹 tab 内容的渲染部分。这样可以保证在切换 tab 时,tab 的背景可以滑动到当前选择的 tab,而不会卡住。
function TabComponent() {
  const [activeTab, setActiveTab] = useState(0);

  const handleTabChange = (tabIndex) => {
    setActiveTab(tabIndex);
  };

  return (
    <div>
      <div className='tabs'>
        <div className={activeTab === 0 ? 'active' : ''} onClick={() => handleTabChange(0)}>Tab 1</div>
        <div className={activeTab === 1 ? 'active' : ''} onClick={() => handleTabChange(1)}>Tab 2</div>
        <div className={activeTab === 2 ? 'active' : ''} onClick={() => handleTabChange(2)}>Tab 3</div>
      </div>
      <div className='tab-content'>
        <Suspense fallback={<div>Loading...</div>}>
          {activeTab === 0 && <TabContent1 />}
          {activeTab === 1 && <TabContent2 />}
          {activeTab === 2 && <TabContent3 />}
        </Suspense>
      </div>
    </div>
  );
}

通过使用 React.lazySuspense 组件进行异步加载,可以保证 tab 的背景可以滑动到当前选择的 tab,而不会卡住。在加载过程中,可以显示一个 loading 状态,以提高用户体验。

ReactJS Tabs 切换卡顿解决方案:异步加载优化 Tab 动画

原文地址: https://www.cveoy.top/t/topic/qgam 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录