React中Css几种实现方案
全局样式
与传统 html 标签类属性不同,react 中 class 必须编写为 className,比如
全局 css
.box {
background-color:red;
width:300px;
height:300px;
}
js
function Hello() {
return <div className='box'>hello react</div>
}
ReactDOM.render(<Hello />, document.getElementById('root'))
与传统在 html 标签定义 css 样式不同,因为这不是传统的 html 代码,而是 JSX,由于 class 作为关键字,无法作为标识符出现,比方说下面的代码将会报错。
const { class } = { class: 'foo' } // Uncaught SyntaxError: Unexpected token }
const { className } = { className: 'foo' }
const { class: className } = { class: 'foo' }
关于官方也有对此问题回答
有趣的话题,为什么 jsx 用 className 而不是 class
所以把传统的 html 代码强行搬运到 react 中,如果带有 class 与 style 属性,那么将会报错。
内联样式
内联样式也得写成对象 key-value 形式,遇到-连字符,则需要大写,如
function Hello() {
return (
<div className='box' style={{ fontSize: '32px', textAlign: 'center' }}>
hello react
</div>
)
}
CSS 的font-size
属性要写成fontSize
,这是 JavaScript 操作 CSS 属性的约定。