首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将2个css变量附加到React & Emotion中的JSX元素

在React和Emotion中将两个CSS变量附加到JSX元素的方法如下:

  1. 首先,确保你已经安装了React和Emotion的相关依赖。
  2. 在你的React组件文件中,导入Emotion的css函数和React的useState钩子函数。
代码语言:txt
复制
import { css } from '@emotion/react';
import { useState } from 'react';
  1. 在组件函数中,使用useState钩子函数创建两个状态变量来存储CSS变量的值。
代码语言:txt
复制
const [color, setColor] = useState('red');
const [fontSize, setFontSize] = useState('16px');

这里我们创建了colorfontSize两个状态变量,并将它们的初始值分别设置为'red'和'16px'。

  1. 使用css函数创建一个样式对象,并在其中使用CSS变量。
代码语言:txt
复制
const styles = css`
  color: ${color};
  font-size: ${fontSize};
`;

在这个样式对象中,我们使用${}语法将状态变量colorfontSize的值作为CSS变量的值。

  1. 在JSX元素中应用样式。
代码语言:txt
复制
return <div css={styles}>Hello, World!</div>;

通过将样式对象作为css属性的值传递给JSX元素,我们可以将样式应用到该元素上。

完整的代码示例:

代码语言:txt
复制
import { css } from '@emotion/react';
import { useState } from 'react';

const MyComponent = () => {
  const [color, setColor] = useState('red');
  const [fontSize, setFontSize] = useState('16px');

  const styles = css`
    color: ${color};
    font-size: ${fontSize};
  `;

  return <div css={styles}>Hello, World!</div>;
};

export default MyComponent;

这样,你就成功地将两个CSS变量附加到React和Emotion中的JSX元素上了。你可以通过修改状态变量的值来动态改变元素的样式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在 React 中使用 Storybook,构建强大的自定义 UI 组件

现在我们有了无样式的组件,让我们用一些CSS给它增添一些风味。 一个CSS对象可以用来动态地在不同的变量上应用不同的样式。例如,Emotion是一个支持用JavaScript编写CSS对象的库。...你可以在Node中输入以下命令来安装Emotion: npm install @emotion/react 为了让Emotion能够在JS中正确处理CSS,我们应该在Banner的顶部添加以下一行。...jsx文件: /** @jsxImportSource @emotion/react */ 下面是一个如何根据道具的值将不同的样式应用到React组件的例子。...这个新文件应该被添加到命名为Banner.stories.jsx的stories文件夹中,以便您的默认Storybook配置能够充分地检测到它。...这个特定的文档视图包含了我们在前面步骤中定义的所有各种Banner故事的摘要,并强调了它们的视觉差异。它还包括一个按钮“显示代码”,可以切换到查看JSX并生成特定的元素。 7.

9.3K10
  • 技术天地 | CSS-in-JS:一个充满争议的技术方案

    随着以 React 为首的现代前端开发框架的兴起,在 JS 中维护 CSS 的方案(也就是 CSS-in-JS)成为了当代前端社区的新趋势,以解决在现代 Web 应用开发中使用 CSS 时出现的一些痛点...传统 CSS 在 FreeWheel 转型 React 过程中的痛点 FreeWheel的前端从十年前的巨型单体Rails应用,发展到如今的前后端分离、基于React组件化的前端单页应用,在CSS的重构和开发方面先后遇到过不少痛点...虽然 React 本身组件提供 style 属性,可以让用户以对象、内联样式的方式,将样式应用于渲染后的 DOM 元素上,在一定程度上实现了样式的组件化封装。...不过由于样式直接内嵌在JSX中,势必在一定程度上会影响组件代码的可读性。 样式组件更像是 CSS 的组件化封装,将样式抽象为语义化的标签,把样式从组件实现中分离出来,让 JSX 结构更“干净整洁”。...这种方式显著减少了因变量引起的 CSS 冗余问题。 ? 原子化 以Tailwind CSS【19】 为代表,CSS 原子化是使用纯 CSS 的一种流行方案。

    2.6K40

    Emotion库维护者解释为什么Spot公司不再使用运行时CSS-in-JS

    另一方面,将 CSS-in-JS 库添加到应用程序代码中会加大浏览器下载的代码包,可能会降低应用程序的启动速度。...关于 React 18,Sebastian Markage 在 GitHub Issues 中向使用 React 并发渲染功能的开发人员提出了如下的警告: 这是一个 CSS 库(动态生成新规则并将它们与...标签插入到文档中)的升级指南,特别是目前大多数专门为React设计的CSS-in-JS库,如styled-components、styled-jsx、react-native-web。...在一篇关于服务器端流的文章中,Misko Hevery(Qwik框架的作者)、Taylor Hunt和Ryan Carato写道: 例如,CSS-in-JS(如Emotion)是一种非常流行的方法。...Magura提到,Emotion的GitHub项目中记录的相当多的问题都与服务器端渲染有关(例如React 18的流、规则插入顺序)。

    75620

    在React项目中使用CSS Module

    在React中,CSS模块(CSS Module)只是一个.css文件,「类似于JavaScript中的局部变量」。它减少了React样式的全局作用域。...像比较常见的库有 Styled Component[1] Emotion[2] styled-jsx[3] 由于它们的语法还有使用方式相差无几,所以我们就挑一个比较常见的库进行演示。...当我们安装create-React-app时,React会为我们处理一切;因此,我们目前不需要为Webpack配置CSS模块。 在使用CSS模块时,不需要额外的代码或添加到CSS模块的第三方代码。...创建一下CSS模块 像Styled Component[4]、Emotion[5]和styled-jsx[6]等CSS库现在都广泛使用。...并且我们在浏览器中进行元素审查时,可以看到指定元素中的class使用从CSS模块获取的哈希值。 ---- 6. 全局 CSS ❝CSS模块并不禁止使用全局CSS。

    1.5K50

    在Vite中接入现代化的CSS 工程化方案

    这些方案各自定义了一套语法,让 CSS 也能使用嵌套规则,甚至能像编程语言一样定义变量、写条件判断和循环语句,大大增强了样式语言的灵活性,解决原生 CSS 的开发体验问题。...CSS in JS 方案,主流的包括emotion、styled-components等等,顾名思义,这类方案可以实现直接在 JS 中写样式代码,基本包含CSS 预处理器和 CSS Modules 的各项优点...好,现在我们封装一个全局的主题色,新建src/variable.scss文件,内容如下:// variable.scss$theme-color: red;然后,我们在原来 Header 组件的样式中应用这个变量.../react` 包编译 emotion 中的特殊 jsx 语法 jsxImportSource: "@emotion/react" }) ]})CSS 原子化框架在目前的社区当中,CSS...windicss/types/jsx';declare module 'react' { type HTMLAttributes = AttributifyAttributes;}shortcuts

    1.7K51

    为什么和 CSS-in-JS 说拜拜

    另一方面,如果使用CSS-in-JS,可以直接在使用它们的React组件中编写样式 如果操作得当,这将极大地提高应用程序的可维护性。 3.可以在样式中使用JavaScript变量。...3.CSS-in-JS会打乱React DevTools。对于每个使用css prop 的元素,Emotion会渲染和组件。...如果你在许多元素上使用css prop,Emotion 的内部组件会使React DevTools变得非常混乱,如图所示。 丑 1.频繁插入CSS规则迫使浏览器做很多额外的工作。...像本例中的 color prop 这样的动态样式不能在构建时提取,所以Compiled使用 style prop(又称内联样式)将该值添加为CSS变量。...众所周知,当应用许多元素时,内联样式会导致次优的性能 该库仍然将模板组件插入你的React树中,如图所示。这将使React DevTools变得混乱,就像运行时的CSS-in-JS一样。

    2.4K20

    React | 借助Pragmatic Drag and Drop实现高性能拖拽

    因为使用的是浏览器支持的原拖拽功能,并且极小的核心包(不到5kb),在近期迅速火起来。所以今天来结合React快速实现结合一下。二....所以本案例是根据照官方的最终实现效果以及核心逻辑重新写了一部分代码并加以解读。代码结构介绍2.3 初始化棋盘官方的案例中采用了国际象棋的一个极简化的棋盘,所以我们所实现的第一步就是画棋盘。...棋子组件 TODO */} , ); } } return squares;}2.4 让棋子可“拖”接下来进入正题,如何将一个元素变得可以拖动呢...首先,改造棋盘格子,让他变成可以放元素的格子。.../react */import { css } from '@emotion/react';import { isEqualCoord, PieceRecord } from '.

    90640

    Sentry 开发者贡献指南 - 前端(ReactJS生态)

    (sx) React 定义 React 组件 组件与视图 PropTypes 事件处理程序 CSS 和 Emotion stylelint 错误 "No duplicate selectors" 状态管理...={this.props.onDelete}> CSS 和 Emotion 使用 Emotion,使用 theme 对象。...最好的样式是您不编写的样式 - 尽可能使用现有组件。 新代码应该使用 css-in-js 库 e m o t i o n - 它允许您将样式绑定到元素而无需全局选择器的间接性。...注意:你的文件名必须是 .spec.jsx 否则 jest 不会运行它! 我们在 setup.js 中定义了有用的 fixtures,使用这些!如果您以重复的方式定义模拟数据,则可能值得添加此文件。...如果没有找到元素,getBy... 和 findBy... 变量将抛出更有用的错误消息。

    6.9K30

    分享 86 个 React 脑图,一口气看完

    前言 React 18.0[1] 已经发布两周了 所以这两天抽空重新完整的过了一遍 React 我将所有内容整理为以下86张脑图,方便以后查阅 附原图和源文件: 原图和源文件(包括xmind和pos文件...核心概念 JSX 简介 2.1JSX 简介.png 2.2元素渲染 2.2元素渲染.png 2.3组件 & Props 2.3组件 & Props.png 2.4.1State & 生命周期 2.4.1State...React 元素类型 3.9.2JSX 指定 React 元素类型.png 3.9.3JSX 中指定 props 3.9.3JSX 中指定 props.png 3.9.4JSX 中的子元素 3.9.4JSX...中的子元素.png 3.10.1性能优化之生产版本 3.10.1性能优化之生产版本.png 3.10.2使用 Chrome Performance 标签分析组件 3.10.2使用 Chrome Performance...标签分析组件.png 3.10.3使用开发者工具中的分析器对组件进行分析 3.10.3使用开发者工具中的分析器对组件进行分析.png 3.10.4其他优化 3.10.4其他优化.png 3.11Portals

    1.1K40

    【译】开始学习React - 概览和演示教程

    它将创建一个实时开发服务器,使用webpack自动编译React,JSX和ES6,自动为CSS文件加前缀,并使用ESLint测试和警告代码中的错误。...使用JSX,我们可以编写类似HTML的内容,也可以创建和使用自己的类似XML的标签。下面是JSX赋值给变量的样子。...JSX实际上更接近JavaScript,而不是HTML,因此在编写时需要注意一些关键区别。 因为class被作为JavaScript中的保留关键字,className用来替代class添加CSS类。...JSX中的属性和方法是驼峰式的 - onclick将变为onClick 自动闭合标签必须以斜杆结尾 - 例如 JavaScript表达式也可以使用大括号将包括变量,函数和属性的内容嵌入JSX...const name = 'Tania' const heading = Hello, {name} 复制代码 JSX比原始的JavaScript中创建和添加许多元素更容易编写和理解,

    11.2K20

    你不知道的 React 最佳实践

    当创建一个 JSX 元素数组时,React 需要给元素添加一个 key 属性。而这通常是通过使用 map 函数来完成的,所以会导致人们使用 Index 来设置 Key属性。 这太糟糕了!...React 使用 key 属性跟踪数组中的每个元素,这是由于数组具有折叠特性。...当您在 React 中工作时,请记住您使用的是 JSX (JavaScript 扩展)而不是 HTML。 您创建的组件应该以大写的 camel 命名,即 「Pascal Case」。...使用大写的驼峰式大小写有助于 JSX 区分默认的 JSX 元素标记和创建的元素。 但是,可以使用小写字母命名组件,但这不是最佳实践。 ?...在上面的崩溃组件测试中,我们要做的是创建一个元素,然后它使用 ReactDom 并挂载导入到刚刚创建的 div 中的任何组件,然后卸载 div。

    3.3K10

    从零开始使用 Astro 的实用指南

    你可以在代码栅栏内定义本地JavaScript变量,然后使用类似JSX的表达式将变量注入HTML模板中。...它指定了其他文件中的子元素应该被注入你的组件模板的位置。 你可以把这个元素添加到你的BaseLayout.astro文件中,就像下面的代码: --- import Header from '.....现在你可以以任何方式将这些属性添加到你的模板中。 另外,注意插槽元素。这是内容出现在最终HTML页面上的地方。 还有一步。...我没有太多的时间,只想使用别人的作品,以便能够尽快创建我的页面。我搜索了一下FAQ的React组件,出现了一些链接。 那么问题来了,如何将React组件添加到你的项目中。...所以我将用我的终端来安装这个包: npm install react-faq-component 我将把FAQ.jsx和FAQ.css文件添加到components目录中,并对我所导入的组件进行自定义

    1K40

    JSX 简介

    它被称为JSX,是一个JavaScript的语法扩展。我们建议在REACT中配合使用JSX,JSX可以很好地描述UI应该呈现出它应有交互的本质形式。...JSX可能会使人联想到模板语言,但它具有JavaScript的全部功能。 JSX可以生成REACT“元素”。我们将在下一章节中探讨如何将这些元素渲染我DOM。下面我们看下学习JSX所需要的基础知识。...在JSX中嵌入表达式 在下面的例子中,我们声明了一个名为name的变量,让后在JSX中使用它,并将它包裹在大括号中: const name ='Josh Perez' consot element =的代码块中使用JSX,将JSX赋值给变量,把JSX当做参数传入,以及从函数中返回JSX: function getGreeting(user) { if (user...我们将在下一章节中探讨如何将 React 元素渲染为 DOM。

    1.8K20
    领券