如何使用tailwindcss中的模板文本来动态更改类



我试图用这行代码来更改它,但它不起作用

const [click, setClick] = useState(false);
const closeNav = () => {
setClick(!click);
};
const openNav = () => {
setClick(!click);
};
<div
className=" absolute inset-0 ${click ? translate-x-0 : -translate-x-full } 
transform  z-400 h-screen w-1/4 bg-blue-300 "
>
<XIcon onClick={closeNav} className=" absolute h-8 w-8 right-0 " />
</div>;

这样做:

<div className={`absolute inset-0 ${click ? 'translate-x-0' : '-translate-x-full'} transform z-400 h-screen w-1/4 bg-blue-300`}></div>
// Alternatively (without template literals):
<div className={'absolute inset-0 ' + (click ? 'translate-x-0' : '-translate-x-full') + ' transform z-400 h-screen w-1/4 bg-blue-300'}></div>

请记住不要使用字符串串联来创建类名,如下所示:

<div className={`text-${error ? 'red' : 'green'}-600`}></div>

相反,您可以选择完成类名:

<div className={`${error ? 'text-red-600' : 'text-green-600'}`}></div>
// following is also valid if you don't need to concat the classnames
<div className={error ? 'text-red-600' : 'text-green-600'}></div>

只要类名完整地出现在模板,Tailwind就不会将其从生产构建中删除。


还有更多选项可供您选择,比如使用classnames或clsx等库,或者可能使用Tailwind特定的解决方案,比如twin.macro、twind、xwind。

进一步阅读:

  • React.js有条件地应用类名
  • 如何将类动态添加到手动类名中
  • React中处理条件样式的正确方法
  • 在JSX中嵌入表达式
  • 模板文字-MDN
  • 优化生产-编写可清除的HTML-Tailwind CSS
const bgClass: any = {
gray: " bg-gray-300",
red: " bg-red-300",
orange: " bg-orange-300",
yellow: " bg-yellow-300",
green: " bg-green-300",
teal: " bg-teal-300",
blue: " bg-blue-300",
indigo: " bg-indigo-300",
purple: " bg-purple-300",
pink: " bg-pink-300 ",

}

const convertLabelToBg = (label: string, baseClass: string): string => {
let className: string = baseClass;
if (label) {
className += bgClass[label];
}
return className;
}

它对我有效。我已经遵循了文档。

https://tailwindcss.com/docs/content-configuration#dynamic-类名

最新更新