Неправильный порядок стилей JSS - Material-UI

У меня есть ситуация, когда стили JSS моей библиотеки компонентов MUI (Стили А) заменяют стили, предоставленные веб-сайтом потребителя (Стили B).

Стили A предназначены для перезаписи стилями B.

Возьмите этот минимальный пример:

Стили А (в библиотеке компонентов)

const styles = theme => ({
    title: {
        color: 'red'
    }
});

const CollapsibleCard = ({classes, title}) => (
    <Typography className = {classes.title} variant = {"h6"}>
        {title}
    </Typography>
);

export default withStyles(styles)(CollapsibleCard);

Стили B (на сайте Потребителя)

const styles = {
    title: {
        color: 'green'
    },
};

const Page = ({classes}) => (
    <CollapsibleCard
        title = {"Testing"}
        classes = {{
            title: classes.title
        }}
    />
);
export default withStyles(styles)(Page);

В результате элемент имеет каскадный стиль:

.CollapsibleCard-title-160 {
    color: red;
}
.Page-title-157 {
    color: green;
}

Где зеленый из стилей B заменяется красным из стилей A.


Редактировать: Причина этого порядка, по-видимому, заключается в порядке, в котором MUI (в частности, функция withStyle()) внедряет таблицы стилей.

Неправильный порядок стилей JSS - Material-UI

Хотя это можно исправить (как указано в здесь), передав индекс в параметрах withStyles, то есть: export default withStyles(styles, {index: 1})(Page);. Это не кажется наиболее эффективным / действенным подходом в библиотечном контексте.

Есть ли способ диктовать порядок стилей MUI <стили библиотеки компонентов <потребительские стили без объявления индекса для каждого withStyles?

Вы нашли решение?

Jeeva J 13.12.2019 09:54

@JeevaJsb, это было некоторое время назад, но я не думаю, что мы нашли решение, выходящее за рамки указанного обходного пути. Не исследовались в более поздних версиях MUI

Ryan Achten 20.12.2019 03:17

Я решил это, изменив порядок импорта в компоненте

Jeeva J 24.12.2019 16:55

@JeevaJsb, что имеет смысл; вы должны добавить это как ответ

Ryan Achten 27.12.2019 22:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
5
4
1 280
1

Ответы 1

В моем сценарии порядок импорта был неправильным. Таким образом, порядок стилей JSS неверен, и тема была переопределена.

Нам нужно убедиться, какой стиль следует применить. Исходя из этого, нам нужно изменить порядок импорта. Это поможет решить проблему.

Другие вопросы по теме