更改 nextjs 的颜色 - 基于 prop 的 tailwind 组件

Change colour of nextjs - tailwind component based on prop

我正在使用 tailwindcss 在 nextjs 中创建一个警报组件来显示一些信息。最后,我想将一个道具“alert_type”传递给该组件,并基于此更改警报的颜色。 (下面的例子还没有这个功能)。在下面的示例中,我希望警报的颜色为绿色,但是它没有选择颜色规范。我不明白为什么这不起作用...

export function Success({ title, children }: AlertProps) {
  const colour = 'green'
  return (
    <div className={`rounded-md p-4 bg-${colour}-50`}>
      <div className="flex">
        <div className="flex-shrink-0">
          <CheckCircleIcon
            className={'h-5 w-5' + ' text-' + colour + '-400'}
            aria-hidden="true"
          />
        </div>
        <div className="ml-3">
          <h3 className={'text-sm font-medium' + ' text-' + colour + '-800'}>
            {title}
          </h3>
          <div className={'mt-2 text-sm' + ' text-' + colour + '-700'}>
            {children}
          </div>
        </div>
      </div>
    </div>
  )
}

您必须 return 完整的字符串,因为 tailwind 仅解析完整的字符串。因此,例如,就像您使用的 bg-${colour}-500 将被替换为 ${first_var} ,您必须在其中定义 const first_var = bg-green-500;

然后每次都必须创建一个新变量,例如 text-colour-700text-colour-800

这样定义

const sec_var = 'text-green-700';
const third_var = 'text-green-800';