首页
学习
活动
专区
工具
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.jsxstories文件夹,以便您默认Storybook配置能够充分地检测到它。...这个特定文档视图包含了我们在前面步骤定义所有各种Banner故事摘要,并强调了它们视觉差异。它还包括一个按钮“显示代码”,可以切换到查看JSX并生成特定元素。 7.

9K10

技术天地 | 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.3K40

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

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

70020

React项目中使用CSS Module

ReactCSS模块(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. 全局 CSSCSS模块并不禁止使用全局CSS

78850

在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

1K50

为什么和 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.3K20

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

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

47940

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

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

6.9K30

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

它将创建一个实时开发服务器,使用webpack自动编译ReactJSX和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.1K20

分享 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

1K40

从零开始使用 Astro 实用指南

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

72040

JSX 简介

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

1.7K20

你不知道 React 最佳实践

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

3.2K10

React极简教程》第二章 React JSXReact JSXReact.createElement独立文件JavaScript 表达式样式数组HTML 标签 vs. React 组件

React JSX将类似XML语法转化到原生JavaScript,元素标签、属性和子元素都会被当作参数传给React.createElement方法...., document.getElementById('example')); 我们可以在以上代码嵌套多个 HTML 标签,需要使用一个 div 元素包裹它,实例 p 元素添加了自定义属性...以下实例如果变量 i 等于 1 浏览器将输出 true, 如果修改 i 值,则会输出 false. React 实例 ReactDOM.render( {i == 1 ?...); 尝试一下 » 数组 JSX 允许在模板插入数组,数组会自动展开所有成员: React 实例 var arr = [ 菜鸟教程, 学不仅是技术,更是梦想!...组件,只需创建一个大写字母开头本地变量

1K20

2022年React对比Vue

Vue定义ref和reactive变量是双向数据流并且可以直接拿到更新后值,ReactuseState返回数组两个参数使用起来更加繁琐 Vue3对比React有更好性能(数据更新和SSR...) Vue模板自带CSS解决方案,React有多种社区方案但是都不能完美解决问题 国人对Vue关注度很高,同时又多种教程和问题解答(百度) Vue3对比React缺点: 对比React没有较为活跃社区...对比React没有更好TypeScript支持 本站是Next.js+Node.js+MySQL搭建CSS方案使用是styled-jsx(Next.js自带但是并不好用)本站是毕业设计,说是为了...React官方值有核心库其他全靠社区所以React更加灵活状态 (反驳)管理和路由等基本方案有几个正经项目不用,一个库连好CSS解决方案都没有怎么能能称得上优秀呢?...对于目前前端开发我推荐使用技术: 框架:Vue3(TSX) SSR:Nuxt.js3版本发布了等过一阵大佬们拍完坑就可以用了 构建工具:开发环境使用Vite打包使用Webpack CSS:Emotion

1.9K20
领券