react四种组件中DOM样式设置方式详解
1、行内样式
想给虚拟dom添加行内样式,需要使用表达式传入样式对象的方式来实现
行内样式需要写入一个样式对象,而这个样式对象的位置可以放在很多地方
例如:render
函数里、组件原型上、外链js文件中
注意:这里的两个括号,第一个表示我们在要JSX里插入JS了,第二个是对象的括号
Hello world2、使用class 【react四种组件中DOM样式设置方式详解】React推荐我们使用行内样式,因为React觉得每一个组件都是一个独立的整体
其实我们大多数情况下还是大量的在为元素添加类名,但是需要注意的是,
class
需要写成className
(因为毕竟是在写类js代码,会收到js规则的现在,而class
是关键字)import React, { Component } from 'react'1. 外部引入定义的样式import styles from './style.css'class ClassStyle extends Component {render() {// js逻辑let className = cx({font: false})return (<>hello样式
world<>)}}export default ClassStyle
3、classNames不同的条件添加不同的样式 有时候需要根据不同的条件添加不同的样式,比如:完成状态,完成是绿色,未完成是红色。那么这种情况下,我们推荐使用classnames这个包:
目的:
由于react原生动态添加多个className会报错
import style from './style.css'
想要得到最终渲染的效果是:
下载安装
npm i -S classnames使用
import classnames from 'classnames'
4、css-in-js
styled-components
是针对React写的一套css-in-js框架,简单来讲就是在js中写css。npm链接- 传统的前端方案推崇"关注点分离"原则,HTML、CSS、JavaScript 应该各司其职,进行分离。
- 而在react项目中,更提倡组件化方案,自然形成了将HTML、CSS、JavaScript集中编写管理的方式。
1.安装
npm i -S styled-components定义样式
2.样式js文件
import styled from 'styled-components'const Title = styled.div`color:red; font-size:16px; h3{color:blue; font-size:20px; }`export {Title}
显示
就像使用常规 React 组件一样使用 Title
import React, { Component } from 'react'import { Title } from './Styles'class App extends Component {render() {return (我只是一个标题你好世界
3.样式继承
样式
import styled from 'styled-components'const Button = styled.button`font-size: 20px; border: 1px solid red; border-radius: 3px; `; // 一个继承 Button 的新组件, 重载了一部分样式const Button2 = styled(Button)`color: blue; border-color: yellow; `; export {Button,Button2}
显示
import React, { Component } from 'react'import {Button,Button2} from './Styles'class App extends Component {render() {return (我是一个按钮2