P粉0345716232023-08-25 09:28:28
不建議用這種方式來寫 Tailwind CSS 類別 。甚至JIT 模式也不支援,引用一下Tailwind CSS 文件:「Tailwind 不包含任何類型的客戶端運行時,因此類別名稱需要在建置時靜態提取,並且不能依賴在客戶 ”
P粉5305192342023-08-25 00:45:37
所以在發現這種工作方式不被推薦並且JIT不支持它之後(感謝慷慨的評論者)。我已將方法更改為更基於“配置”的方法。
基本上,我使用不同 props 的基本配置定義一個 const 並將它們應用於元件。這需要更多的維護工作,但它可以完成工作。
這是一個設定範例。 (目前無需打字)並進行一些更好的重構,但您會明白的。
const buttonConfig = {
// Colors
primary: {
bgColor: 'bg-primary-500',
color: 'text-white',
outline:
'border-primary-500 text-primary-500 bg-opacity-0 hover:bg-opacity-10',
},
secondary: {
bgColor: 'bg-secondary-500',
color: 'text-white',
outline:
'border-secondary-500 text-secondary-500 bg-opacity-0 hover:bg-opacity-10',
},
// Sizes
small: 'px-3 py-2',
medium: 'px-4 py-2',
large: 'px-5 py-2',
};
然後我就這樣套用樣式:
<motion.button whileTap={{ scale: 0.98 }} className={` rounded-lg font-bold transition-all duration-100 border-2 focus:outline-none ${buttonConfig[size]} ${outlined && buttonConfig[color].outline} ${buttonConfig[color].bgColor} ${buttonConfig[color].color}`} onClick={onClick} type="button" tabIndex={0} > {children} </motion.button>