我最近在我的网站上实现了一个黑暗的主题,并注意到吐司的消息在黑暗模式下无法正常显示。经过一番调查,我发现了一行代码,需要添加黑暗的主题,以正确地工作与吐司消息。我认为问题一定是来自TailwindCSS。
下面是解决这个问题的代码行:
<ToastContext.Provider value={value}>
{children}
{/* why without this line dark theme on toast won't work */}
<span className='hidden error_dark warning_dark info_dark success_dark' />
{toastQueue.map(({ id, props }) => {
const { severity, ...rest } = props;
const style = `${severity}${theme === 'dark' ? '_dark' : ''}`;
return (
<div key={id} className={`${style}`}>
<Toast {...rest} />
</div>
);
})}
</ToastContext.Provider>
此文件的完整来源:ToastContext.tsx
Tailwind配置文件:tailwind.config.js
吐司演示:demo
我已经找到了一个问题的解决方案,在我的网站上实现了一个黑暗的主题后,吐司消息在黑暗模式下无法正常显示。我添加了一行代码,其中包含一个带有特定类名的隐藏span元素,这允许dark主题正确处理吐司消息。问题可能与TailwindCSS及其配置有关。如果有人能找到更好的解决方案,我将不胜感激。”
1条答案
按热度按时间w8rqjzmb1#
根据文件:
Tailwind如何提取类名的最重要的含义是,它只会在源文件中找到作为完整的未断开字符串存在的类。
如果你使用字符串插值或将部分类名连接在一起,Tailwind将找不到它们,因此不会生成相应的CSS:
不要动态构造类名
在上面的例子中,字符串
text-red-600
和text-green-600
不存在,所以Tailwind不会生成这些类。相反,请确保您使用的任何类名都完整存在:始终使用完整的类名
您可以:
if
语句:severity
和theme
Map到适当的类名:@layer
之外的src/styles/globals.css
中编写CSS规则。safelist
类: