Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433

styled components + material ui

25.10.2021, 16:19. Показов 892. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Вычитал такую штуку https://stackoverflow.com/ques... -component

И вот мне надо её применить к тайпографи.
Я хочу писать разметку в стиле
JavaScript
1
2
<StyledTypography>
<StyledTypography Helper>
Сейчас моя разметка выглядит примерно так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const styles = theme => ({
    heading: {
        fontSize: theme.typography.pxToRem(17),
        fontWeight: theme.typography.fontWeightBold,
    },
    secondaryHeading: {
        fontSize: theme.typography.pxToRem(15),
        fontStyle: 'italic',
        color: theme.palette.text.secondary,
    }
})
 
 
// ... 
<Typography className={classes.heading}>
    привет
</Typography>
 
<Typography className={classes.secondaryHeading}>
    мир
</Typography>
// ...
Переписываю на Styled Components
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import styled from 'styled-components';
import { withTheme } from "@material-ui/core/styles"
import { Typography } from '@material-ui/core';
 
export const Column = styled.div`
    flex-basis: 40%;
`
 
export const StyledTypography = withTheme(styled(Typography)`
    font-size: ${props => props.theme.typography.pxToRem(17)};
    font-weight: ${props => props.theme.typography.fontWeightBold};
 
    ${props => props.Helper`
        font-size: ${props => props.theme.typography.pxToRem(15)};
        font-style: italic;
        color: ${props => props.theme.palette.text.secondary};
    `}
`)
На что мне браузер отвечает
TypeError: props.Helper is not a function

Я понимаю, что не добавил &&css
Но добавив его курсив тоже не появляется. Кажется дело в том, что в данном случае всё обернуто в withTheme(...). Короче говоря, не знаю как тут быть.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2021, 16:19
Ответы с готовыми решениями:

Когда применять styled components?
В курсе объяснили, что он позволяет избежать проблему с дублями в названиях классов в больших проектах. Ранее использовали BEM, но как...

Styled-components - к children компонента не применяется стиль
Всем привет! Возникла проблема со styled-components - стиль не применяется к компоненту: Компонент, который будет стилизоваться: ...

Tabs vue-styled components
Как реализовать Tabs на vue-styled components с отмеченым активном табом

2
 Аватар для Ovederax
604 / 404 / 212
Регистрация: 30.04.2017
Сообщений: 744
Записей в блоге: 1
25.10.2021, 20:53
Цитата Сообщение от Timurs Посмотреть сообщение
props.Helper`
такая запись используется для такой штуки
https://learn.javascript.ru/es... lonizatsii

Если посмотреть код этой штуки, то как я понял Typography это классовый компонент, а не styled компонент.
Поэтому не получится такими образом дописать свойств.
https://github.com/mui-org/mat... ography.js

темизацию можно касательно styled делать по другому
https://dev.to/aromanarguello/... onents-49h

Цитата Сообщение от Timurs Посмотреть сообщение
Сейчас моя разметка выглядит примерно так
я думаю можно просто сделать умную обвертку над Typography , которая будет подставлять нужный класс в зависимости от свойств
например, если есть helper то добавит соответствующую настройку

через emotion можно генерировать классы через css`...`, styled-components вроде это не умеет делать
https://emotion.sh/docs/@emotion/css
1
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
25.10.2021, 22:14  [ТС]
Ovederax, спасибо! Оказывается всё работает на самом деле, если && css добавить. Дело в том, что глаз под конец рабочего дня замылился и я писал
HTML5
1
2
<StyledTypography>привет</StyledTypography>
<Typography Helper>мир</Typography>
И дома только заметил, что должно то быть
HTML5
1
<StyledTypography Helper>мир</StyledTypography>
Да более того, на оффсайте стайлед компонентс во втором примере уже тоже самое написано на примере кнопки, только без theming'a материаловского.

Добавлено через 7 минут
Ovederax, вообще клевая штука эти стилизованные компоненты, разметка прям шикарно по коду выглядит. Helper конечно с маленькой буквы сделал helper. Разбил просто тайпографи на текст заголовка (аббревиатуры в основном приложении) и поясняющий текст.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2021, 22:14
Помогаю со студенческими работами здесь

Cannot implicitly convert type `Material' to `UnityEngine.Material'
Помогите с данной проблемой, вышли ошибки, но раньше подобного не было Cannot implicitly convert type `Material' to...

cs(14,21): error CS0029: Cannot implicitly convert type 'UnityEngine.Material[*,*]' to 'UnityEngine.Material[]'
Подскажите пожалуйста в чем ошибка и как её исправить using System.Collections; using System.Collections.Generic; using...

Styled Document in .NET
Меня интересует компонета, позволяющая отображать документ со стилями. Под стилями я подразумеваю не только шрифт, цвет, начертание,...

Ошибка does not have a corresponding components
Видимо это мой камень предктновения. Все время не так обьявляю. Ткните носом или напишите что куда нужно переставить пожалуйста. ...

Components.Classes
Здравствуйте ! Хотел написать вызов локального файла из скрипта ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru