react 中样式写法

2023-11-11

方式一:行内样式:

优点:

基于内联样式书写的样式肯定不会导致样式冲突,可以动态获取state中的状态来完成动态样式

缺点:

采用小驼峰写法, 有的css书写没有提示易错,在JSX中写大量的style样式,比较混乱,伪类, 伪元素这种样式无法通过内联样式编写。

import React, { Component } from 'react';

class ReactStyle extends Component {
  constructor(props) {
    super(props);
    // 动态改变样式
    this.state = { textColor: 'orange' }
  }
  render() { 
    // 将样式抽取到一个变量中
    const h2Style = { fontSize: '26px', color: 'red' }
    return (
      <div>
        <h2 style={ h2Style }>我是H2标签</h2>
        <p style={{ fontSize: '36px', color: 'blue' }}>我是p标签</p>
        <div style={{ color: this.state.textColor }}>我是div标签</div>
      </div>
    )
  }
}
export default ReactStyle;

方式二:外部样式(在组件中引入外部的样式文件):使用外部样式时要注意类名避免冲突

定义 out.js 组件:

import React, { Component } from 'react';
import './out.css'; // 引入外部样式

class Out extends Component { 
  constructor(props) {
    super(props);
  }
  render() { 
    return (
      <div className='out'>我是使用外部样式渲染后的结果</div>
    )
  }
}

export default Out;

定义外部样式文件 out.css

.out{
  font-size: 30px;
  color: skyblue;
  background: orangered;
}

方式三:css-in-js

在React中有css-in-js,它是一种模式,这个css由js生成而不是在外部文件中定义,是CSS Modules,主要是借助第三方库生成随机类名称的方式来建立一种局部类名的方式

这种css-in-js的第三方模块有很多:可以访问:https://github.com/MicheleBertoli/css-in-js

方式四:styled-components

使用styled-components 的好处是,它可以让组件自己的样式对自己生效,不是全局样式,做到互不干扰;

首先通过npm 或者 cnpm 进行安装styled-components 模块;        

npm install -S styled-components

在某个文件中使用styled-components时,通过import 的方式引入该模块;

import styled from "styled-components"; // 引入styled-components库,实例化styled对象

例子:

组件ButtonA.js

import styled from 'styled-components'; // 引入styled-components组件
// 生命样式 ButtonA组件,通过styled 对象进行创建,注意styled.hlml 元素后面是 反引号;
const ButtonA = styled.button`
  width: 100px;
  height: 30px;
  border:1px solid red;
  color: blue;
`;
// 对外暴露出去
export {
  ButtonA
}

 组件 ButtonB.js 

import styled from 'styled-components'; // 引入styled-components组件
// 生命样式 ButtonA组件,通过styled 对象进行创建,注意styled.hlml 元素后面是 反引号;
const ButtonB = styled.button`
  width: 120px;
  height: 40px;
  border: 1 px solid blue;
  color: red;
`;
// 对外暴露出去
export {
  ButtonB
}

 StyledComponents.js 组件:

import React, { Component } from 'react';
import { ButtonA } from './components/ButtonA';
import { ButtonB } from './components/ButtonB';
// 要避免在render方法中声明样式化组件

class StyledComponents extends Component { 
  render() { 
    return (
      <>
        <ButtonA>按钮A</ButtonA>
        <ButtonB>按钮B</ButtonB>
      </>
    )
  }
}
export default StyledComponents;

在其他页面中可以使用过StyledComponents组件了。以上组件都没有传递参数;

样式组件可以接收props
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

react 中样式写法 的相关文章

  • 使用 vanilla JavaScript 将事件绑定到动态创建的 HTML 元素 [无 jquery] [重复]

    这个问题在这里已经有答案了 我需要将事件附加到动态创建的元素 借助 jQuery 我可以使用以下代码对此进行归档 body on click my element function 如果我添加一个新的 my element 它会自动附加事件
  • 为什么这个对象的“forEach 不是函数”?

    这可能真的很愚蠢 但我不明白为什么这不起作用 var a cat large a forEach function value key map console log value 未捕获的类型错误 a forEach 不是函数 http j
  • 如何将文本插入摩纳哥编辑器?

    我的应用程序中嵌入了摩纳哥代码编辑器 如何以编程方式在特定行上插入文本 var editor monaco editor create document getElementById container value First line n
  • 如何在 javascript/jquery 中进行非阻塞睡眠?

    如何在 javascript jquery 中进行非阻塞睡眠 冒着从评论者那里窃取答案的风险 请使用设置超时 https developer mozilla org en US docs Web API WindowTimers setTi
  • 即使 WebPack 构建工作正常,VS Code 显示未找到模块

    我的 VS Code 说它找不到导入 即使我的 WebPack 构建仍然有效 这是进口 import as tf from tensorflow tfjs 以及来自 VS Code 的消息 找不到模块 tensorflow tfjs 您的意
  • 我可以在 Express POST 请求中进行 DOM 操作吗?

    我正在使用基本的 HTML CSS 前端 目前有一个登陆页面 上面有一个表单 可将 一些数据发送到数据库 当请求完成后 它期待某种响应 在这种情况下 我正在重新渲染页面 但是 我想用某种感谢消息替换表单 以便用户知道它已正确发送 我尝试过简
  • Puppeteer 错误 错误:等待选择器超时

    目前我有一个网站 其 HTML 中有此内容 我通过检查chrome开发者工具中的元素确认了这一点 div class hdp photo carousel div class photo tile photo tile large 我直观地
  • 降低 Nodejs 服务器上的 CPU 利用率

    我正在研究降低 CPU 利用率的有趣方法 在 NodeJS 服务器上 在我的研究过程中 我发现了以下文章 http engineering linkedin com nodejs blazing fast nodejs 10 perform
  • Firestore onSnapshot() 方法多次触发

    我有一个带有多个路由和 vuex 的 vue cli 4 应用程序 Firestore 数据库已成功连接 我的应用程序立即反映从 Firestore 控制台应用于数据库的修改 在离开包含与 Firestore 同步 的组件的路线然后返回后
  • 在 Javascript 中按日期对数组进行排序

    我在用着sort 按日期排序数组 elements data sort function a b return a date getTime b date getTime 问题是某些元素缺少日期 或日期无效 这导致了这个错误 无法读取属性
  • 无需源代码即可部署网站

    我用php开发了网站 我想在没有源代码的情况下部署它 用php可以吗 我可以将网站代码转换为某种中间形式然后进行部署吗 您可以使用 Zend Guard 来编码您的代码 这样它就无法被逆向工程 http www zend com en pr
  • 我可以检测焦点来源吗? (Javascript、jQuery)

    快速提问 是否可以检测焦点是来自鼠标单击还是来自焦点事件的选项卡 我想如果没有 我将不得不在同一元素上使用单击句柄来确定源 但我更喜欢通过焦点事件的方式 Thanks Gausie 可能无法 100 工作 但如果没有直接的方法 那么你不能直
  • 跨浏览器兼容音频有哪些选项?

    我正在使用这个功能 function playSound file MyAudio new Audio file MyAudio play 不幸的是 我正在努力寻找一种适用于所有浏览器的文件类型 Mp3 适用于 Chrome Safari
  • 从右到左的语言和编程问题

    我正在创建一个网络文本编辑器 它使用我创建的新语言 如 BBcode 这种标记语言将采用阿拉伯语 但我面临这些问题 在所有 IDE 和编辑器中将英语和阿拉伯语文本混合在同一行中确实很困难 因为会发生奇怪的事情 单词和字符的顺序发生变化 使用
  • Rails:包括外部 JavaScript

    我想使用 JavaScript 库 例如 jQuery 插件 我是否使用 Rails 资产管道 或者我应该将其包含在 javascript include tag 中 我有哪些选择以及推荐的做法是什么 您会仅在几个页面上还是在整个应用程序中
  • 我可以使用 javascript 生成 JSON 文件吗?

    我想在域 example1 com 上创建一个页面 并获取 解析另一个域 example2 com json json 上的 JSON 文件 可以使用 javascript 生成 json 文件 在 example2 com 上 吗 我认为
  • Javascript onclick隐藏div

    我想使用 javascript 隐藏这个警告 div 我的 javascript 正确吗 我想在单击关闭图标时隐藏 关闭 div images close icon gif div strong Warning strong These a
  • 包括来自raw.github.com的js

    我有一个 github com 演示页面 链接到https raw github com master file js https raw github com master file js这样我就不需要总是复制 js文件转移到gh pag
  • jQuery() 与 jQuery.parseHtml() 空格语法错误

    我有一行 javascript 导致 jQuery 中出现语法错误 document find Container replaceWith data find Content 代码本身如果相当无害的话 它所做的只是从 ajax 调用获取响应
  • Bootstrap $('#myModal').modal('show') 不起作用

    我不知道为什么 但所有模态功能都不适用于我 我检查了版本和负载 它们都很好 我不断收到此错误消息 Uncaught TypeError modal is not a function 对于隐藏我已经找到了替代方案 代替 myModal mo

随机推荐

  • 【译】用 Rust 实现 csv 解析-part4

    Rust and CSV parsing 译文 用 Rust 实现 csv 解析 part4 原文链接 https blog burntsushi net csv 原文作者 BurntSushi 译文来自 https github com
  • 计操理论课04 -- openEuler实验第三章进程管理

    文章目录 任务1 创建并运行内核线程 任务要求 任务代码 任务截图 任务2 打印输出当前系统 CPU 负载情况 任务要求 任务代码 任务截图 任务3 打印输出当前处于运行状态的进程的 PID 和名字 任务要求 任务代码 任务截图 任务4 使
  • 区块链基本概念学习笔记

    文章目录 区块链产生与发展历史 区块链的场景属性 区块链定义 区块链的特点 区块链加密货币的特点 区块链核心技术 区块链的核心概念 区块链分类 区块链架构特点 区块链产生与发展历史 区块链的场景属性 区块链定义 区块链是一种点对点传输协议
  • 交叉编译并移植Android工具adb与adbd过程

    Android tool 移植adb与adbd的记录 近期研发一个新功能 需要用到Android的adbd服务 如是尝试着交叉编译adbd 由于目前的使用场景是PC端通过usb连接到开发板上 利用adb push pull 进行文件的传输
  • 一个浮点数跨平台产生的问题

    感谢网友唐磊 微博 唐磊 name 投稿 本文原文在唐磊的博客上 原文地址 原文分析还不够好 而且可能对人有误导 所以 我对原文做了很多修改 并加了Linux下的内容 浮点数是一个很复杂的事情 希望这篇文章有助于大家了解浮点数与其相关的C
  • LeetCode【129】求根到叶子节点数字之和

    题目 给定一个二叉树 它的每个结点都存放一个 0 9 的数字 每条从根到叶子节点的路径都代表一个数字 例如 从根到叶子节点路径 1 gt 2 gt 3 代表数字 123 计算从根到叶子节点生成的所有数字之和 说明 叶子节点是指没有子节点的节
  • 电子游戏,一个价值千亿美元的机会

    如果元宇宙确实是互联网的继承者 那么说它的 前辈 来自电子游戏行业似乎很奇怪 毕竟 到目前为止 互联网与电子游戏行业的发展轨迹是完全不同的 互联网起源于政府的研究实验室和大学 后来 它逐渐扩展到企业 然后是中小企业 最后才是消费者 娱乐业可
  • 数据库事务(Database Transaction)

    数据库事务 Database Transaction 数据库事务 Database Transaction 是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元 一个数据库事务通常包含了一个序列的对数据库的读 写操作 它的
  • 12个Flex常用功能代码

    12个Flex常用功能代码 1 复制内容到系统剪贴板 1 System setClipboard strContent 2 复制一个ArrayCollection 1 dummy solution well it works 2 var b
  • ubuntu下配置vim

    1 安装vim sudo apt get install vim full2 配置文件的位置在目录 etc vim下面 有个名为vimrc的文件 这是系统中公共的vim配置文件 对所有用户都有效 3 设置语法高亮显示1 打开vimrc 添加
  • DLNA介绍(包括UPnP,2011/6/20 更新)

    这部分的内容大多来源于网络及官方文档 按照自己的翻译理解整理所成 东西比较多 从头慢慢看还是可以懂个大概的 目录 一 DNLA的建立 二 DLNA的成员 三 DLNA标准的制定 四 DLNA的设备 五 DLNA的架构 六 云时代的数字家庭
  • Python中列表、字典、元组、集合数据结构整理

    这篇文章主要介绍了Python中列表 字典 元组 集合数据结构整理 较为详细的分析了这几类数据结构的具体用法及相关技巧 需要的朋友可以参考下 本文详细归纳整理了Python中列表 字典 元组 集合数据结构 分享给大家供大家参考 具体分析如下
  • 518. 零钱兑换 II -- 完全背包

    518 零钱兑换 II 这道题其实就是一个完全背包问题 关于背包问题的相关文章见 01背包问题 动态规划 完全背包问题 class CoinChange 完全背包 518 零钱兑换 II https leetcode cn problems
  • Android Automotive-sensor服务详解

    本章将会详细介绍Android原生车辆服务的传感器处理流程 同时还会介绍Mananger lt lt gt gt Service之间数据传输协议 即Manager如何与Service进行交互 Car Sensor数据传递时序 车辆控制之Se
  • 二分查找(Binary Search) 常见问题解决方法总结

    缘由 今天浏览 何登成的技术博客 无意中发现了写的blog 二分查找 Binary Search 需要注意的问题 以及在数据库内核中的实现 随想总结下二分查找的常见问题 问题背景 今年的实习生招聘考试 我出了一道二分查找 Binary Se
  • Vue2安装Vuex报错:npm ERR code ERESOLVE npm ERR ERESOLVE unable to resolve dependency tree.

    Vue2安装Vuex报错 npm ERR code ERESOLVE npm ERR ERESOLVE unable to resolve dependency tree
  • 职场新人入门指南(干货)

    目录 报联商 如何写一封邮件 最简单的时间管理方法 文件管理方法 职场新人必懂的潜规则 细节展现潜力 处处留心皆学问 Excel常用操作 新人需要学习的文职工作法宝 流程图 快速掌握的工具 搜索引擎的正确使用方法 十个帮你成长的网站 行业大
  • 33 openEuler使用LVM管理硬盘-管理逻辑卷

    文章目录 33 openEuler使用LVM管理硬盘 管理逻辑卷 33 1 创建逻辑卷 33 2 查看逻辑卷 33 3 调整逻辑卷大小 33 4 扩展逻辑卷 33 5 收缩逻辑卷 33 6 删除逻辑卷 33 openEuler使用LVM管理
  • 三菱M80操作介绍_三菱数控系统#6451参数引起的通信故障案例

    三菱E60系统故障案例 关于 6451参数引起的通信故障案例 故障1现象 在传送PLC 程序时中途中断 断电后 重新设定 6451 00110000 屏幕立即变为灰屏 只有将 6451 00010000 屏幕又恢复正常 将系统做维修格式化
  • react 中样式写法

    方式一 行内样式 优点 基于内联样式书写的样式肯定不会导致样式冲突 可以动态获取state中的状态来完成动态样式 缺点 采用小驼峰写法 有的css书写没有提示易错 在JSX中写大量的style样式 比较混乱 伪类 伪元素这种样式无法通过内联