【react】react18的学习(五)--样式私有化

文章探讨了在React和Vue中管理组件样式的几种方法,包括行内样式、约定类名、CSSModules、react-jss库以及styled-components。CSSModules提供模块化样式,react-jss允许在JS中定义样式并支持传参,而styled-components则是将CSS写在JS组件内。此外,还提到了高阶组件(HOC)的概念在样式管理和组件动态化中的应用。

上一篇:【react】react18的学习(四)–复合组件通信

vue中scoped,react中没有;

  • 方式一:【个别样式可用】行内样式style,不利于复用维护;

  • 方式二:【公共样式常用】人为约定,每个组件类名不重复即可,如外层以组件名为前缀:.nav-*{}

  • 方式三:【公共样式可用,原生css写法】CSS Modules:1、以Nav.module.css为样式文件;2、使用import sty from './Nav.module.css',这个对象是键值对,以css中类名为键,以生成的唯一值为值;3、使用className={sty.box}

// 以Nav.modules.css为样式文件
.box{}
.box2{composes: box;} //组合,相当于使用box2,自动加了box
:global(.demo) {}// 不参与处理,最终还是.demo
// 导入
import sty from './Demo.module.css'
sty={box:'Nav_box_c6EW3'} //生成唯一值,做类名
className={sty.box}
  • 方式四:【常用于hooks组件】基于css-in-js思想,安装react-jss
    • css modules相同之处:返回对象键值对;
    • 不同之处:前者是css写法,后者是js写法,支持传参;
    • 默认只能在hooks组件;也可使用代理组件、高阶组件作用于类组件;
import { createUseStyles } from 'react-jss'
// props为调用者传入的参数
const useStyles = createUseStyles({
  box: props => {
    return {
      color: props.color,
      '& a': {
        color: props.color,
      },
    }
  },
})
// 使用
const Demo = () => {
  // box:'box-0-2-1 box-d0-0-2-2',用于类组件会报错
  let { box } = useStyles({
    color: 'black',
  })
  return (
    <div className={box}>
      <div>测试显示</div>
    </div>
  )
}
  • 补充:高阶组件HOC

闭包思想:使用函数执行返回函数组件,函数组件内部嵌套当前组件;可用于动态组件、类组件使用hooks;

// 父组件
<Demo title='hoc组件'></Demo>
// 子组件
import React, { Component } from 'react'

class Demo extends Component {
  render() {
    let { title } = this.props
    return ()
  }
}
const ProxyCom = function (Component) {
  return function HOC(props) {
    return <Component {...props}></Component>
  }
}
export default ProxyCom(Demo)
  • 方式五:【公共样式常用】基于css-in-js思想,安装styled-components
    • react-jss相同之处:思想相同,都是js写法,支持传参;
    • 不同之处:返回的是react组件,该组件自带一个hash的类名;与方式二类似,给外层唯一值类名;
// 写样式组件
import styled from 'styled-components'

export const Box = styled.div`
  font-size: 20px;
  span {
    color: ${props=>props.color};
  }
`
// 使用
import { Box } from './Box'

return (
  <Box color='red'>
    <div>{title}</div>
    <span>hello</span>
  </Box>
)

下一篇:react18的学习(六)–redux补充

内容概要:本文档《React入门学习笔记.pdf》由谢莉编写,主要介绍了React的基础知识及其生态系统。React是一个开源的JavaScript库,专注于构建用户界面,主要实现视图层功能。文档首先概述了React的特点,强调其组件化、声明式编程及跨平台应用能力。随后,文档深入探讨了React工程化项目的构建,包括使用Webpack等工具实现组件的合并、压缩、打包等操作,以及官方提供的脚手架`create-react-app`的安装和使用。接着,文档详细讲解了React的基础知识,如数据驱动思想、JSX语法、合成事件处理机制、UI组件库的使用等。此外,文档还介绍了组件化开发中的函数组件、类组件、Hooks组件及其底层逻辑,包括状态管理和生命周期函数的使用。文档进一步探讨了样式私有化、高阶组件、React生态圈(如Redux、MobX、React-Router-Dom等)的应用,并对企业级开发中的fetch请求库封装、路由懒加载、路由表统一管理等进行了说明。最后,文档对比了四大React工程化脚手架(create-react-app、dva-cli、create-umi、vite)的区别,特别介绍了umi和antd pro的应用。 适合人群:具备一定编程基础,特别是对前端开发有一定了解的研发人员。 使用场景及目标:①帮助开发者快速掌握React的基本概念和使用方法;②指导开发者构建和优化React工程项目;③介绍React生态系统中的关键技术和工具,如Redux、MobX、React-Router-Dom等;④提升开发者在实际项目中的开发效率和代码质量。 其他说明:文档内容详尽,不仅涵盖了React的基础知识,还深入探讨了其在企业级开发中的应用。对于希望深入了解React及其生态系统,并应用于实际项目中的开发者来说,是一份非常有价值的参考资料。文档还提供了多个实例和代码片段,有助于读者更好地理解和实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值