如何将动态 TailwindCSS 类添加到 React 中的 DOM 元素

Posted

技术标签:

【中文标题】如何将动态 TailwindCSS 类添加到 React 中的 DOM 元素【英文标题】:How to add dynamic TailwindCSS classes to DOM elements in React 【发布时间】:2020-08-05 22:44:48 【问题描述】:

我是 TailWindCSS 的新手,我想为 Button 元素添加启用/禁用样式。如何有条件地向按钮添加禁用的特定样式/类(即假设我需要添加“opacity-50 cursor-not-allowed”)?

    <button
          className="bg-blue-500 hover:bg-blue-400 text-white font-bold py-2 px-4 border-b-4 border-blue-700 hover:border-blue-500 rounded mr-3"
          disabled=!globalContext.users.length > 0
          onClick=handleClearResultsClick
        >
          Clear Results
    </button>

【问题讨论】:

这能回答你的问题吗? React Js conditionally applying class attributes 是的,谢谢。 【参考方案1】:

您可以使用新的ES6 "template strings"。

这是一个简单的React component,它在计数器 时禁用了 (-) 按钮

.pointer-even-none 是呈现禁用按钮的 tailwindCSS 类

const [count, setCount] = useState(0);

return (
  <Fragment>
       /* button Substract with styles tailwind*/
      <button className=`p-2 $count <= 0 ? 'opacity-50 pointer-events-none': 'bg-red-700'` 
              onClick=() => setCount( count - 1 )>
              Substract
      </button>

      /* Counter */
      <span className="p-2"> count </span>

      /* button Add whit styles tailwind*/
      <button className="p-2 bg-green-700"
              onClick=() => setCount(count + 1 )>
              Add
      </button>
  </Fragment>
)

【讨论】:

【参考方案2】:

classNames('foo', 'bar'); // => '富吧' classNames('foo', bar: true ); // => '富吧' classNames( 'foo-bar': true ); // => 'foo-bar' classNames( 'foo-bar': false ); // => '' classNames( foo: true , bar: true ); // => '富吧' classNames( foo: true, bar: true ); // => '富酒吧'

// 大量不同类型的参数 classNames('foo', bar: true, duck: false , 'baz', quux: true ); // => 'foo bar baz quux'

// 其他假值被忽略 classNames(null, false, 'bar', undefined, 0, 1, baz: null , ''); // => 'bar 1'

你可以使用这个轻量级库类名

https://www.npmjs.com/package/classnames

它会让事情变得整洁

【讨论】:

以上是关于如何将动态 TailwindCSS 类添加到 React 中的 DOM 元素的主要内容,如果未能解决你的问题,请参考以下文章

将清除后的 tailwindcss 加载到 iFrame

如何将tailwindcss添加到vite?

我如何将tailwindcss添加到vite中?

使用 TailwindCSS 时,如何避免模板在渲染列表时将分隔符添加到分隔符?

使用 flexbox (tailwindcss: flex-1) 如何将背景颜色添加到整个元素而不仅仅是文本?

将tailwindcss添加到幸运框架