You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 14中导入外部TS文件的TailwindCSS复用类名对象样式不生效的问题求助

Next.js 14中导入外部TS文件的TailwindCSS复用类名对象样式不生效的问题求助

我最近碰到个棘手的问题,想请教下各位大佬!我定义了一个存放可复用TailwindCSS类名的对象,原本打算在整个项目里统一复用,但现在发现只有把这个对象直接写在React组件文件内部时,样式才会生效;从外部TS常量文件导入的话,虽然对应的类名会出现在DOM元素上,但完全没有样式效果。

先给大家贴一下我的代码:

外部常量文件 constants.ts(我想复用这个对象,比如这么用:className={ElementTypeColors[type]})

export const ElementTypeColors: { [key in IElementType]: string } = {
  'alkali metal': 'bg-lime-400 dark:bg-lime-800',
  metalloid: 'bg-yellow-400 dark:bg-yellow-900',
  actinide: 'bg-orange-400 dark:bg-orange-900',
  'alkali earth metal': 'bg-red-400 dark:bg-red-800',
  'reactive non-metal': 'bg-blue-400 dark:bg-blue-800',
  'unknown type': 'bg-gray-400 dark:bg-gray-700',
  'transition metal': 'bg-violet-400 dark:bg-violet-800',
  'noble gas': 'bg-fuchsia-400 dark:bg-fuchsia-800',
  'post-transition metal': 'bg-teal-400 dark:bg-teal-800',
  lanthanide: 'bg-sky-400 dark:bg-sky-800',
};

组件文件 Component.tsx 中的使用方式

<Card className={`border-none p-1 col-span-1 ${ElementTypeColors[element.Type]}`}>

目前的问题是:上面这段组件代码,只有把ElementTypeColors对象直接声明在组件内部时才能正常工作,从外部constants.ts导入的话就完全没样式效果。

这实在太不利于维护了!以后要是想修改某个类型的配色,我得手动去每个写了这个对象的组件里改一遍,根本不是长久之计。我用的技术栈是Next.js 14 + React 18,有没有大佬知道怎么解决这个问题?万分感谢!

备注:内容来源于stack exchange,提问作者0mppu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:48:06