我正在做一个多页面的网站,并试图添加不同的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>
  );
}

导出默认应用;

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>
);

推荐答案

您可以直接在组件内的<body>元素上为每条路由设置内联样式.

例如:

function MyPage() {
    document.body.style.fontSize = '14px';
    // return some JSX...
}

要在卸载组件时重置样式,可以应用useEffect.

import { useEffect } from 'react';
function MyPage() {
    useEffect(() => {
        const origFontStyle = document.body.style.fontSize;
        document.body.style.fontSize = '14px';
        return () => document.body.style.fontSize = origFontStyle;
    }, []);
    // return some JSX...
}

您可以考虑将其解压缩到一个定制挂钩中,以便更方便地使用.

Javascript相关问答推荐

如何在加载的元数据上使用juserc和await中获得同步负载?

reaction如何在不使用符号的情况下允许多行返回?

React对话框模式在用户单击预期按钮之前出现

ReactJS中的material UI自动完成类别

每次子路由重定向都会调用父加载器函数

深嵌套的ng-container元素仍然可以在Angular 布局组件中正确渲染内容吗?

模块与独立组件

调用removeEvents不起作用

嵌套异步JavaScript(微任务和macrotask队列)

Spring boot JSON解析错误:意外字符错误

如何在mongoose中链接两个模型?

Prisma具有至少一个值的多对多关系

在我的index.html页面上找不到我的Java脚本条形图

查询参数中的JAVASCRIPT/REACT中的括号

邮箱密码重置链接不适用于已部署的React应用程序

令牌JWT未过期

有没有一种直接的方法可以深度嵌套在一个JavaScript对象中?

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

计算对象数组中属性的滚动增量

使用Java脚本在div中创建新的span标记