文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

面试官:说说React中引入Css的方式有哪几种?区别?

2024-12-03 01:39

关注

一、是什么

组件式开发选择合适的css解决方案尤为重要

通常会遵循以下规则:

在这一方面,vue使用css起来更为简洁:

而在react中,引入CSS就不如Vue方便简洁,其引入css的方式有很多种,各有利弊

二、方式

常见的CSS引入方式有以下:

在组件内直接使用

直接在组件中书写css样式,通过style属性直接引入,如下:

  1. import React, { Component } from "react"
  2.  
  3. const div1 = { 
  4.   width: "300px"
  5.   margin: "30px auto"
  6.   backgroundColor: "#44014C",  //驼峰法 
  7.   minHeight: "200px"
  8.   boxSizing: "border-box" 
  9. }; 
  10.  
  11. class Test extends Component { 
  12.   constructor(props, context) { 
  13.     super(props); 
  14.   } 
  15.   
  16.   render() { 
  17.     return ( 
  18.      
     
  19.        123
 
  •        "red"}}> 
  •      
  •  
  •     ); 
  •   } 
  •  
  • export default Test; 
  • 上面可以看到,css属性需要转换成驼峰写法

    这种方式优点:

    缺点:

    组件中引入css文件

    将css单独写在一个css文件中,然后在组件中直接引入

    App.css文件:

    1. .title { 
    2.   color: red; 
    3.   font-size: 20px; 
    4.  
    5. .desc { 
    6.   color: green; 
    7.   text-decoration: underline; 

    组件中引入:

    1. import React, { PureComponent } from 'react'
    2.  
    3. import Home from './Home'
    4.  
    5. import './App.css'
    6.  
    7. export default class App extends PureComponent { 
    8.   render() { 
    9.     return ( 
    10.       "app"
    11.         "title">我是App的 
    12.         "desc">我是App中的一段文字描述

       
    13.          
    14.       
     
  •     ) 
  •   } 
  • 这种方式存在不好的地方在于样式是全局生效,样式之间会互相影响

    组件中引入 .module.css 文件

    将css文件作为一个模块引入,这个模块中的所有css,只作用于当前组件。不会影响当前组件的后代组件

    这种方式是webpack特工的方案,只需要配置webpack配置文件中modules:true即可

    1. import React, { PureComponent } from 'react'
    2.  
    3. import Home from './Home'
    4.  
    5. import './App.module.css'
    6.  
    7. export default class App extends PureComponent { 
    8.   render() { 
    9.     return ( 
    10.       "app"
    11.         "title">我是App的 
    12.         "desc">我是App中的一段文字描述

       
    13.          
    14.        
    15.     ) 
    16.   } 

    这种方式能够解决局部作用域问题,但也有一定的缺陷:

    CSS in JS

    CSS-in-JS, 是指一种模式,其中CSS由 JavaScript生成而不是在外部文件中定义

    此功能并不是 React 的一部分,而是由第三方库提供,例如:

    下面主要看看styled-components的基本使用

    本质是通过函数的调用,最终创建出一个组件:

    基本使用如下:

    创建一个style.js文件用于存放样式组件:

    1. export const SelfLink = styled.div` 
    2.   height: 50px; 
    3.   border: 1px solid red; 
    4.   color: yellow; 
    5. `; 
    6.  
    7. export const SelfButton = styled.div` 
    8.   height: 150px; 
    9.   width: 150px; 
    10.   color: ${props => props.color}; 
    11.   background-image: url(${props => props.src}); 
    12.   background-size: 150px 150px; 
    13. `; 

    引入样式组件也很简单:

    1. import React, { Component } from "react"
    2.  
    3. import { SelfLink, SelfButton } from "./style"
    4.  
    5. class Test extends Component { 
    6.   constructor(props, context) { 
    7.     super(props); 
    8.   }   
    9.   
    10.   render() { 
    11.     return ( 
    12.      
       
    13.        "People's Republic of China">app.js 
    14.        "palevioletred" style={{ color: "pink" }} src={fist}> 
    15.           SelfButton 
    16.          
    17.       
    18.     ); 
    19.   } 
    20.  
    21. export default Test; 

    三、区别

    通过上面四种样式的引入,可以看到:

    至于使用react用哪种方案引入css,并没有一个绝对的答案,可以根据各自情况选择合适的方案

    参考文献

    https://zh-hans.reactjs.org/docs/faq-styling.html#gatsby-focus-wrapper

    https://mp.weixin.qq.com/s/oywTpNKEikMXn8QTBgITow

     

    来源:JS每日一题内容投诉

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    软考中级精品资料免费领

    • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

      难度     813人已做
      查看
    • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

      难度     354人已做
      查看
    • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

      难度     318人已做
      查看
    • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

      难度     435人已做
      查看
    • 2024年上半年系统架构设计师考试综合知识真题

      难度     224人已做
      查看

    相关文章

    发现更多好内容

    猜你喜欢

    AI推送时光机
    位置:首页-资讯-后端开发
    咦!没有更多了?去看看其它编程学习网 内容吧
    首页课程
    资料下载
    问答资讯