css - 如何防止 CSS 文件中的白色文本出现在渲染的 React 应用程序中?
问题描述
我正在尝试在 React 中渲染一个按钮,当您单击它时会更改文本和颜色。
我让它工作了,但是每当我渲染应用程序时,文件头部的标题和index.html
文件中的文本App.module.css
都会出现在页面上(白色文本)。我一直在寻找解决方案,但似乎找不到。
Btn.js
import styles from './App.module.css';
const Btn = ({toggleIt, toggle}) => {
return(
<>
<button onClick={toggleIt} className={toggle ? styles.btntrue : styles.btnfalse}>
{toggle ? "true" : "false"}
</button>
</>
);
}
export default Btn;
应用程序.module.css
* {
color: white;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
}
.btntrue {
background-color: green
;
}
.btnfalse {
background-color: red
;
}
应用程序.js
import Btn from "./btn"
function App() {
const [toggle, setToggle] = useState(false)
const toggleIt = () => {
setToggle(!toggle)
}
return (
<React.Fragment>
<Btn
toggleIt = {toggleIt}
toggle = {toggle}
/>
</React.Fragment>
);
}
export default App;
Index.js(为了完整起见)
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<App />,
document.getElementById('root')
);
索引.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Button</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Web site created using create-react-app" />
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
我怎样才能从屏幕上删除这个文本,或者它总是在那里,你必须围绕它设置样式?
解决方案
您的 CSS 文件声明所有元素都以白色文本可见,包括通常不可见的元素,例如<style>
or <title>
:
* { /* Make ALL elements... */
display: flex; /* ...displayed visibly, with "flex" display type... */
color: white; /* ...and white text */
}
通常情况下,<style>
默认display: none
情况下会将它们隐藏起来,但在这里你明确地用display: flex
.
相反,您应该将这些样式仅应用于需要它的元素,而不是*
(所有元素)。查看React 中的作用域 CSS以了解如何将 CSS 规则仅应用于特定组件内的元素。
您现有方法的问题在于,React 中的 CSS 范围主要通过将唯一后缀附加到类名来工作(因此您的btntrue
类可能会变成btntrue_a732uw
或类似的东西,确保btntrue
不同组件的两个类名不会发生冲突),但是如果您不'不要为规则使用类名(比如你用*
),它也不能被限定!您可以通过使用.allflex *
例如而不是 just来避免这种情况*
,然后将allflex
类名应用于组件的根元素。
推荐阅读
- reactjs - React.js 在 switch 语句中大于/小于
- ios - 错误:无法加载客户端证书私钥文件
- laravel - 如何在 laravel 中检索用户时急切加载?
- python - 打开超大.xlsx,更改一张小表的内容,然后保存
- html - HTML屏幕的拆分布局,下面的内容不可见
- google-workflows - 您如何暂停并稍后从 nodejs 恢复工作流程
- python - pandas to_datetime('today') 抛出错误
- c++ - 不将文本从函数输出到控制台?
- swiftui - 如何为图像设置动画以在屏幕上连续移动?
- reactjs - 更新 React + Django 上的更改,而无需每次都运行“npm run build”