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

TypeScript Next.js项目MUI添加自定义Typography变体失效求助

MUI自定义Typography变体不生效修复方案

按以下步骤依次排查修改:

1. 确认主题已注入根应用

Next.js项目需要在_pages/_app.tsx中使用ThemeProvider包裹整个应用,否则自定义主题不会生效,参考代码:

import type { AppProps } from 'next/app'
import { ThemeProvider } from '@mui/material/styles'
import CssBaseline from '@mui/material/CssBaseline'
import { theme } from './muiThemeOveride' // 路径替换为你自己的配置文件路径

export default function App({ Component, pageProps }: AppProps) {
  return (
    <ThemeProvider theme={theme}>
      <CssBaseline />
      <Component {...pageProps} />
    </ThemeProvider>
  )
}

2. 适配自定义变体的响应式处理

responsiveFontSizes默认仅处理MUI内置的Typography变体,自定义的h7需要手动加入配置的variants数组中,修改muiThemeOveride.ts的主题导出代码:

export const theme = responsiveFontSizes(createTheme({
  components: {
    MuiButton: {
      styleOverrides: {
        outlined: {
          borderColor: '#000', // 这里替换为你实际的黑色值,或者提前定义black变量
          color: '#000',
          '&:hover': {
            borderColor: '#000',
          }
        }
      },
    },
  },
  typography
}), {
  // 把自定义的h7加入响应式处理列表
  variants: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7']
})

3. 修复变量未定义问题

你当前配置中使用的black变量未定义,会导致主题创建失败,连带Typography配置失效,要么直接写颜色值#000,要么在文件顶部提前定义const black = '#000000'。

4. 确认自定义字体已引入

如果使用的Recoleta、Fira Sans是外部非系统字体,需要在全局样式或者项目入口的Head中引入对应的字体资源,否则字体会回退为系统默认,看起来像是样式未生效。

内容的提问来源于stack exchange,提问作者Paladin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:06