默认情况下,当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> );