169 похожих чатов

Привет. Столкнулась с вопросом о композиции Очень все таки сложно или

я не понимаю правильный подход.
Есть Base, у него ширина 200, плюс там еще есть стили

export const useStyles = makeStyles(theme => ({
container: {
width:200,
"&:hover .MuiInputAdornment-positionEnd svg":{
display: "block",
},
},
);

const Base (props)=>{
const classes = useStyles();
return <TextField classes={{root:classes.container}} {...props} />
}

Потом у меня есть Extended на основе Base
Там ширина уже 400,
Но!!! У меня пропадают остальные стили есть сделать так


export const useStyles = makeStyles(theme => ({
container: {
width:400,
},
);
const Extended ()=>{
const classes = useStyles();
return <Base classes={{root:classes.container}} />
}

Как правильно кастоматизировать ??

Пока что мне приходить в голову что то такое
const Base ({classes, ...props})=>{
const classes = useStyles();
if(classes)
return <TextField classes={{root:classes.container + ' '+classes.container }} {...props} />
}

Вот так что ли делать ?? Типа основной базовый компонент, чтобы его пропсы были более универсальными и много разных вариантов прослушивали, и адаптировались к этим пропсам
Но блин тогда базовый компонент раздувается и становится универсальным.

Как правильно готовить композицию ?? Или я правильно все делаю, с этим надо смириться ??

5 ответов

9 просмотров

Там у них есть утилита clsx https://material-ui.com/getting-started/faq/#whats-the-clsx-dependency-for Еще в Бейз можно передать пропс width с шириной например, и дальше передать его в useStyles, и получить эту ширину в стилях. Посмотри как здесь props.color проброшен https://material-ui.com/styles/api/#examples-3

Кузьма-Макаров Автор вопроса

спасибо посмотрю. А вы на тайпскрипте пишете ?? Если писать на тайпскрипте, то когда добавляешь новые цвета, компилятор уже начинает ругаться Типа материал юи принимет только два цвета, праймери и секондари Приходится писать декларации, покрывать новыми типами, объясняя material ui что все ок, ты умеешь принимать новые цвета тоже. Типа так. Муторно конечно. Или вы глушите это @ts-ignore или делая any тип ??

На ТайпСкрипте, но я Matherial UI не использовал давно, могу предположить что надо Тему как-то настраивать, по любому есть решение, гуглить надо

Написать обёртку))))))))))))

Переопределение типов из библиотеки же. Гугли declare module/override material ui theme types

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
11
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
8
Книга Юрова В.И пойдёт для обучения?
Botsman
24
I was reading a lot about API and REST API and I still don't get it, what's a application programming interface? 😄 How to build a private API for getting other informations f...
Witold 🖤🩶
12
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Всем доброго дня, ребят подскажите пожалуйста, если в курсе по ассемблеру используется MASM32, могу ли я использовать FASM? В чем явная разница и будет ли у меня все работать?
Botsman
17
Карта сайта