reactjs 在react组件中使用顺风css主题

11dmarpk  于 2023-03-17  发布在  React
关注(0)|答案(1)|浏览(140)

我想在我的react组件中使用tailwind主题,为此我做了以下代码:

import theme from "tailwindcss/defaultTheme";

console.log(theme)

另外,我创建了tailwind.config.js文件,在其中对主题进行了新的更改。
这样做我遇到了一个问题,因为console.log(theme)的值是默认的顺风值,即使我覆盖了它们。
如何从tailwind主题中获取更新值?

ulydmbyx

ulydmbyx1#

我们假设在tailwind.config.js中定义了以下内容:

const colors = require('tailwindcss/colors')

module.exports = {
  theme: {
    colors: {
      white: colors.slate[50],
      dark: colors.slate[900],
    },
  },
  // content: ...
  // plugins: ...
}

现在我们可以在导入配置文件后访问属性white

import { theme } from './tailwind.config.js'

const color = theme.colors['white']

奖金

由于tailwind JIT不能处理动态类名,我们可以创建自己的getter来使用tailwind默认值和我们的配置

import { spacing as defaultSpacing } from 'tailwindcss/defaultTheme'
import { theme } from '../tailwind.config.js' // path may vary

export const getThemeColor = (color) => theme.colors[color]
export const getTailwindSpacing = t => defaultSpacing[`${t}`]

并在代码中的任何地方使用它和常用的style属性

export const SomeComponent = () => {
  const someCalculatedValue = 2 * 2

  return (
    <div style={{ 
      right: tailwindSpacing(someCalculatedValue) 
      backgroundColor: getThemeColor('white')
    }}>
      some content
    </div>
  )
}
typescript 版本
import { spacing as defaultSpacing } from 'tailwindcss/defaultTheme'
import { theme } from '../tailwind.config.js' // path may vary

export const getThemeColor = (color: string) => theme.colors[color]
export const getTailwindSpacing = (spacing: number) => {
  const number = `${spacing}` as keyof typeof defaultSpacing
  return defaultSpacing[number]
}

相关问题