-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
面试官:说说react中引入css的方式有哪几种?区别? #196
Comments
unocss |
tailwind css |
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
一、是什么
组件式开发选择合适的
css
解决方案尤为重要通常会遵循以下规则:
在这一方面,
vue
使用css
起来更为简洁:而在
react
中,引入CSS
就不如Vue
方便简洁,其引入css
的方式有很多种,各有利弊二、方式
常见的
CSS
引入方式有以下:在组件内直接使用
直接在组件中书写
css
样式,通过style
属性直接引入,如下:上面可以看到,
css
属性需要转换成驼峰写法这种方式优点:
缺点:
写法上都需要使用驼峰标识
某些样式没有提示
大量的样式, 代码混乱
某些样式无法编写(比如伪类/伪元素)
组件中引入css文件
将
css
单独写在一个css
文件中,然后在组件中直接引入App.css
文件:组件中引入:
这种方式存在不好的地方在于样式是全局生效,样式之间会互相影响
组件中引入 .module.css 文件
将
css
文件作为一个模块引入,这个模块中的所有css
,只作用于当前组件。不会影响当前组件的后代组件这种方式是
webpack
特工的方案,只需要配置webpack
配置文件中modules:true
即可这种方式能够解决局部作用域问题,但也有一定的缺陷:
CSS in JS
CSS-in-JS, 是指一种模式,其中
CSS
由JavaScript
生成而不是在外部文件中定义此功能并不是 React 的一部分,而是由第三方库提供,例如:
下面主要看看
styled-components
的基本使用本质是通过函数的调用,最终创建出一个组件:
基本使用如下:
创建一个
style.js
文件用于存放样式组件:引入样式组件也很简单:
三、区别
通过上面四种样式的引入,可以看到:
在组件内直接使用
css
该方式编写方便,容易能够根据状态修改样式属性,但是大量的演示编写容易导致代码混乱组件中引入 .css 文件符合我们日常的编写习惯,但是作用域是全局的,样式之间会层叠
引入.module.css 文件能够解决局部作用域问题,但是不方便动态修改样式,需要使用内联的方式进行样式的编写
通过css in js 这种方法,可以满足大部分场景的应用,可以类似于预处理器一样样式嵌套、定义、修改状态等
至于使用
react
用哪种方案引入css
,并没有一个绝对的答案,可以根据各自情况选择合适的方案参考文献
The text was updated successfully, but these errors were encountered: