Я работаю над проектом, который позволит пользователю динамически изменять темы и использует под капотом reactstrap и styled-components. Мы хотим настроить все переменные через SASS, который работает нормально. Чтобы сделать эти переменные доступными для стилизованных компонентов, мы использовали sass-extract-loader для создания объектов темы.
Все это отлично работает, когда мы статически выбираем одну из тем, но мне не удалось заставить ее работать динамически и надежно. У меня две проблемы:
1) В процессе разработки прекрасно работает переключение темы один раз. Если я изменю его снова, мои нестилевые компоненты (то есть необработанные компоненты reactstrap) будут стилизованы со второй темой. Я считаю, что это потому, что вторая тема загружает и переопределяет исходный CSS. 2) В производстве я получаю то же сочетание, что и # 1 по умолчанию (то есть, поскольку все файлы CSS объединяются в один пакет, компоненты reactstrap имеют один стиль, а стилизованные компоненты "уважают" тему) .
Я считаю, что лучший вариант для нас - иметь темы в двух отдельных файлах CSS и переключать "альтернативные" ссылки на них. Я просто не знаю, как настроить CRA, чтобы не помещать весь CSS в один основной пакет, и позволить мне вручную добавлять ссылки на альтернативные таблицы стилей. Если я могу разделить их на отдельные файлы, я считаю, что смогу просто добавить теги и динамически поменять местами свойство rel = "alternate".
Возможно, есть более эффективные способы добиться этого. Насколько я понимаю, самый простой способ управлять темами Bootstrap - это через переменные SASS, и я хотел бы убедиться, что эти переменные не нужно переопределять при использовании их в стилизованных компонентах.