重复问题
- 我搜索了现有的问题
最新版本
- 我测试了最新版本
重现步骤 🕹
链接到实时示例: https://codesandbox.io/s/dreamy-frog-pybrk2?file=/src/App.js
步骤:
- 在创建主题时,在typography上设置自定义fontFamily。
- 在typography上创建一个没有fontFamily的新变体,因为它应该已经使用上面指定的一个。
- 检查渲染变体的typography。
当前行为 😯
这是我的自定义主题的一个小样本:
import { createTheme } from "@mui/material/styles";
const theme = createTheme({
typography: {
fontFamily: "Times New Roman",
custom: {
textDecoration: "underline",
color: "#FF0008"
}
}
});
export default theme;
如果我尝试使用 custom
变体,它将不会使用 Times New Roman 字体家族。添加 allVariants
也不起作用。
预期行为 🤔
我添加的每个自定义变体都应该使用我在typography主题中指定的fontFamily。
上下文 🔦
设置全局字体家族... 我找到了一个相关的票据 #28633 ,似乎没有什么效果,除了在您创建的每个新变体上手动添加fontFamily之外... 该票据被标记为需要更多信息,所以我用一个代码沙盒创建了一个新的...
谢谢....
您的环境 🌎
npx @mui/envinfo
Don't forget to mention which browser you used.
Output from `npx @mui/envinfo` goes here.
6条答案
按热度按时间dgsult0t1#
你是对的,它应该可以工作。作为解决方法,你可以全局覆盖Typography组件的
defaultProps
。以下是如何做到这一点:https://codesandbox.io/s/trusting-poitras-knpvop?file=/src/theme.js1cklez4t2#
如果这有任何帮助,我已经在
fontFamily
主题中实现了这个功能,当直接将其放入createTheme()
函数(没有组合)时。尝试组合主题时无法正常工作。
更新:只要它在组合的第一个主题中,排版似乎就可以正常工作。将我的
typography
定义放在我的SharedTheme
定义中也可以正常工作,即使在组合之后也是如此。因此,问题似乎是在初始主题对象之后的任何时候定义它。3pvhb19x3#
这个问题是关于在主题中定义自定义排版变体时,字体未被应用的问题。
col17t5w4#
看起来这是因为在沙盒中,css文件中定义了一个
font-family
。如果我注解掉它,现在按预期工作了。这个类在这里被使用:
我猜现在的问题是...如果在自定义变体中没有定义font-family,它应该遵循主题的typography中定义的默认字体,还是应该遵循这里css/类中使用的字体家族。
uttx8gqw5#
@jove0610 但是,即使在
className
之外应用了ThemeProvider
,它也不会从主题中选择字体家族,这是应该的。请查看代码沙箱:https://codesandbox.io/s/elegant-lehmann-ztiy07?file=/src/index.js0sgqnhkj6#
如果这有任何帮助,我已经在
fontFamily
主题中成功地使用了createTheme()
函数(没有组合)。尝试组合主题时无法正常工作。
更新:只要它在组合的第一个主题中,排版似乎就可以正常工作。将我的
typography
定义放在我的SharedTheme
定义中也可以正常工作,即使在组合之后也是如此。所以问题似乎是在初始主题对象之后的任何时候定义它。非常感谢,经过几个小时的调试后,这个问题终于解决了!