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 ответов

22 просмотра

Там у них есть утилита 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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта