我正在制作一个多页面的网站,并试图为不同的页面添加不同的CSS。
我使用react-router-dom
来处理路由,我的文件设置如下:
Main.js
import React from 'react';
import { Routes, Route } from 'react-router-dom';
// Other imports for pages here
const Main = () => {
return (
<Routes>
<Route exact path="/" element={<MyPage />}></Route>
<Route exact path="/" element={<AnotherPage />}></Route>
</Routes>
);
}
export default Main;
App.js
import './App.css';
import Main from './Main';
const App = () => {
return (
<div className="App">
<Main />
</div>
);
}
导出默认App;
index.js
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import { BrowserRouter } from 'react-router-dom';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<BrowserRouter>
<App />
</BrowserRouter>
);
2条答案
按热度按时间8oomwypt1#
您可以直接在组件内部的
<body>
元素上为每个路由设置内联样式。例如:
要在卸载组件时重置样式,可以应用
useEffect
。您可以考虑将其提取到一个自定义钩子中,以便更方便地使用。
fquxozlt2#
所以我想出了一个解决方案,虽然不确定这是否是一个好的实践,但它确实有效。
我在返回之前,在每个页面组件的开头设置body类。
例如:
唯一的问题是,我必须在每个页面组件上设置这个,以确保一个组件的主体CSS不会进入另一个组件。