默认情况下,当import组件时,对应的CSS也会被加载,这容易造成样式冲突,如下:
import MobileApp from './MobileApp'
import DesktopApp from './App'
//这里MobileApp,DesktopApp组件中的css都会被引入
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<BrowserRouter>
<Suspense fallback={<div>Loading...</div>}>
{isMobile() ? <MobileApp /> : <DesktopApp />}
</Suspense>
</BrowserRouter>
);如果想引入不同的组件时,才引入对应的css, 可以如下操作
import React,{lazy,Suspense} from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import isMobile from './funs/isMobile';
const MobileApp = lazy(() => import('./MobileApp'));
const DesktopApp = lazy(() => import('./App'));
//当真正要渲染时,才加载import
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<BrowserRouter>
<Suspense fallback={<div>Loading...</div>}>
{isMobile() ? <MobileApp /> : <DesktopApp />}
</Suspense>
</BrowserRouter>
);