javascript - 组件样式在 React 应用程序中不优先于全局 CSS
问题描述
我有一个反应应用程序:
index.js
import React from "react";
import ReactDOM from "react-dom";
import { ThemeProvider } from "@material-ui/styles";
import { CssBaseline } from "@material-ui/core";
import Themes from "./themes";
import App from "./components/App";
import * as serviceWorker from "./serviceWorker";
import { LayoutProvider } from "./context/LayoutContext";
import { UserProvider } from "./context/UserContext";
import { GridPaginationProvider } from "context/GridPaginationContext";
import { ConfirmDialogServiceProvider } from "context/ConfirmDialogContext";
import "bootstrap/dist/css/bootstrap.css";
import "ag-grid-community/dist/styles/ag-grid.css";
import "ag-grid-community/dist/styles/ag-theme-material.css";
ReactDOM.render(
<LayoutProvider>
<UserProvider>
<GridPaginationProvider>
<ConfirmDialogServiceProvider>
<ThemeProvider theme={Themes.default}>
<CssBaseline />
<App />
</ThemeProvider>
</ConfirmDialogServiceProvider>
</GridPaginationProvider>
</UserProvider>
</LayoutProvider>,
document.getElementById("root")
);
serviceWorker.unregister();
这是模态组件:
import React from "react";
import { Button } from "@material-ui/core";
import { Modal, ModalHeader, ModalBody } from "reactstrap";
import "./confirm-dialog.scss";
const ConfirmDialog = ({
modalOptions,
open,
title,
icon,
variant,
description,
buttonTexts,
onSubmit,
onClose
}) => {
return (
<Modal isOpen={open} toggle={onClose} {...modalOptions} zIndex={1201}>
<ModalHeader toggle={onClose}>{title}</ModalHeader>
<ModalBody>
<div className="dialog">
<div className="dialog-icon">
<img src={icon} alt="icon" />
</div>
<div className="dialog-content">{description}</div>
<div className="dialog-actions">
<Button variant="contained" color="primary" onClick={onSubmit}>
{buttonTexts && buttonTexts.ok}
</Button>
<Button variant="contained" color="secondary" onClick={onClose}>
{buttonTexts && buttonTexts.cancel}
</Button>
</div>
</div>
</ModalBody>
</Modal>
);
};
export default ConfirmDialog;
确认-dialog.scss
.modal {
z-index: 1201 !important;
&-content {
border-radius: 20px;
}
&-body {
padding: 0 30px 40px;
}
}
.dialog {
text-align: center;
&-content {
font-size: 16px;
color: #272727;
padding: 22px 0;
}
&-actions {
button {
margin: 0 10px;
font-size: 14px;
font-weight: normal;
min-width: 110px;
}
}
}
问题是 css inconfirm-dialog.scss
没有覆盖bootstrap.css
's.modal-*
类。
我不明白有什么问题。确认对话框组件有自己的样式,应该覆盖.css
文件中导入的index.js
文件的 CSS。模态由自定义触发react-hook
。相同的模态对话框在我的另一个项目中工作,但在这个项目中,全局引导 CSS 优先于确认对话框自己的 .scss。
解决方案
没关系,想通了。App.js
我只需要在导入index.js
文件之前移动所有 .css导入。
推荐阅读
- pytest - 如何运行 pytest-bdd 测试?
- sql-server - 如何修复 SQL 2019 大数据中的“pod has unbound immediate PersistentVolumeClaims”?
- python - 我们可以在flask api中使用JWT和sqlalchemy吗?
- jinja2 - 从父文件夹获取模板部分
- python-2.7 - 如何在视图中添加产品列表?
- java - 增加与添加一个时,Java 未返回正确的树搜索结果
- kurento - 无法将 Kurento KMS 连接到 RTSP 多播 URI
- javascript - Javascript 与 epsilon 相等
- python - AttributeError:“PySide2.QtCore.Qt.Alignment”对象没有属性“testFlag”
- java - 使用 Mockito 模拟嵌套的 Groovy 方法