#reactjs #material-ui
#reactjs #материал-пользовательский интерфейс
Вопрос:
Есть ли возможность предоставить несколько шрифтов в поставщике темы в react, а затем динамически применять один из шрифтов к разным элементам / компонентам с помощью перехватов или чего-то еще?
BR, Игорь
Ответ №1:
ДА. Вы можете предоставить несколько шрифтов через конфигурацию темы.
const theme = createMuiTheme({
typography: {
a: {
fontFamily: "Roboto",
fontSize: 12
},
b: {
fontFamily: "Helvetica",
fontSize: 14
}
}
});
<ThemeProvider theme={theme}>
<... />
</ThemeProvider>
И в вашем компоненте:
const useStyles = makeStyles((theme) => ({
textA: {
...theme.typography.a,
},
textB: {
...theme.typography.b,
}
}));
const Greeting = ({useA}) => {
const classes = useStyles();
return <p className={useA ? classes.textA : classes.textB}>Hey</p>;
};
Если вы не хотите создавать два имени класса, вы также можете передать свойство useStyles
и установить шрифт внутри класса в соответствии с этим свойством.
Комментарии:
1. А .. понял … я не был уверен… я думал, что вы можете предоставить только те параметры, которые поставщик темы предоставляет вам … спасибо…
2. Кто-нибудь знает, как получить этот метод использования типографики без предупреждений о типах (при использовании не устаревшей
createTheme()
) функции?
Ответ №2:
Я сделал это, и это сработало, используя createTheme
const theme = createTheme({
...
typography: { fontFamily: 'Montserrat, Yekan' },
});