npm 包 @emotion/styled 使用教程

阅读时长 5 分钟读完

随着前端技术的不断发展,现代化的前端开发需要更高效、简洁、易维护的代码,为此,前端社区也不断涌现出更多实用的工具和库。其中, @emotion/styled 是一款基于 emotionstyled-components 库,它提供的styled() API 可以帮助我们更方便地使用 CSS-in-JS 技术,实现高效、灵活和易维护的样式化方案。

本文将从以下几个方面详细地介绍 @emotion/styled 的使用方法。

安装和配置

我们可以通过 npm 进行安装,输入以下命令:

安装完成后,我们需要在需要使用它的文件顶部引入它:

基础使用

styled() API 的使用方式与 styled-components 的用法基本相同。我们可以使用它创建一个自定义的 React 组件,为它设置样式,并渲染它。

下面是一个最基础且常见的例子:

-- -------------------- ---- -------
------ ------ ---- ------------------

----- ------ - --------------
  ----------------- -----
  ------- -----
  ------ ------
  -------- -----
--

-------- ----- -
  ------ ------------- -------------
-

这段代码创建了一个名为 Button 的自定义组件,它返回一个 HTML 按钮元素,并把 background-colorbordercolorpadding 样式属性设置为与它相应的值。

渲染时,我们直接在 JSX 中使用这个组件的标签名称即可。

处理动态变化

styled() API 可以轻松地处理动态变化,我们可以使用 JavaScript 表达式来动态计算属性,例如元素的 widthheight,以及在悬停等事件时改变颜色等。

-- -------------------- ---- -------
----- ------ - --------------
  ----------------- ------- -- ---------------
  ------- -----
  ------ ------
  -------- -----
--

-------- ----- -
  ------ -
    ------- --------------
      ----- ---
    ---------
  --
-

可见,在 Button 标签中设置了 bgColor 属性,我们可以直接在模板字面量中使用 JavaScript 表达式计算其值,并把该变量作为 props 对象的一个属性传递给 styled() 函数即可。

继承和组合

除了创建单个独立的组件外,我们还可以使用 @extend 指令,把 CSS 样式从一个组件应用到另一个组件。

-- -------------------- ---- -------
----- ------ - --------------
  ----------------- -----
  ------- -----
  ------ ------
  -------- -----
--

----- ------------ - ---------------
  ----------------- ----
--

-------- ----- -
  ------ -
    --
      ------------- ------------
      -----------------------------------
    ---
  --
-

这里,我们使用 styled() API 创建了 ButtonCancelButton 两个组件。CancelButton 继承了 Button 中的所有样式属性,同时自身在 background-color 中重置 Button 元素的背景颜色为红色。

通过这种方法,我们可以快速方便地实现组件的复用和样式的继承,简化代码编写,提高了代码的可重用性和可维护性。

属性传递

有时候,我们需要将 styled() API 创建的组件与其他元素相混合,这时候就需要转发属性。很简单,只需在组件中接受另一个属性作为参数,并将其传递给内部的 HTML 元素即可。

-- -------------------- ---- -------
----- ------ - --------------
  ----------------- -----
  ------- -----
  ------ ------
  -------- -----
--

-------- ----- -
  ----- ----- - ------ -----
  ----- ----------- - -- -- - ----------------------- --

  ------ -
    ------- ----------------------
      -------
    ---------
  --
-

在上面的示例中,我们将 handleClick 回调函数和 label 属性传递给了 Button 组件,并且它们能够在组件内部正确地工作。

这就是使用 @emotion/styled 的基本内容。通过灵活使用它,可以让我们更高效地编写可重用的样式化组件,提高代码的简洁性和可维护性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/134553