当我使用 tailwindcss 时,扩展运算符不起作用

Posted

技术标签:

【中文标题】当我使用 tailwindcss 时,扩展运算符不起作用【英文标题】:Spread operator not work when I use tailwindcss 【发布时间】:2021-11-04 18:34:01 【问题描述】:

你好吗?希望一切顺利!

我在 Tailwindcss 中遇到了一个相当奇怪的问题,当我关闭组件的范围并获得 ...rest 之类的道具时,className 无法正常工作,例如:

import  ButtonhtmlAttributes  from 'react';

type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & 
  title: string;
  backgroundLowOpacity?: boolean;
;

export function Button( title, backgroundLowOpacity, ...rest : ButtonProps) 
  return (
    <button
      ...rest
      type="button"
      className=`$backgroundLowOpacity && 'bg-gray-100'`
    >
      title
    </button>
  );

这就是组件,现在我想在调用父组件时使用className

<Button title="Sign up" className="bg-purple-500" />

但这不起作用,在这种情况下,我的按钮没有颜色purple

【问题讨论】:

【参考方案1】:

好的,所以您基本上是在第 13 行设置了一个新的 className 属性,从而覆盖了 ...rest 传播中的 className 属性。应该是这样的:

import  ButtonHTMLAttributes  from 'react';

type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & 
  title: string;
  backgroundLowOpacity?: boolean;
;

export function Button( title, backgroundLowOpacity, className, ...rest : ButtonProps) 
  return (
    <button
      ...rest
      type="button"
      className=`$className $backgroundLowOpacity && 'bg-gray-100'`
    >
      title
    </button>
  );

现在这样,无论您在组件中传递的 className 属性将首先被添加,然后如果 backgroundLowOpacity 也被传递,您的短路将被评估。

【讨论】:

不客气@AndresdoSantos。您应该将我的答案标记为已接受:)

以上是关于当我使用 tailwindcss 时,扩展运算符不起作用的主要内容,如果未能解决你的问题,请参考以下文章

TailwindCSS 版式响应变体不包括扩展类选择器

无法扩展:TailwindCSS 变体:

TailwindCSS 不会将我的 VueJS 应用程序的宽度扩展到全屏

使用 TailwindCSS 时,Google 字体无法在移动设备上呈现

Tailwindcss V3.0.1 类不工作

为啥我会收到此错误:当我使用 tailwindcss 时,'postcss' 不被识别为内部或外部命令、可运行程序或批处理文件