Как создать глобальный стиль в React

Я работаю над школьным проектом, в котором можно создавать элементы HTML с помощью Selection.js (визуальное выделение превращается в элемент HTML). В настоящее время пользователь может писать CSS в редакторе CodeMirror. После того, как пользователь применит CSS, нажав кнопку, стиль вставляется непосредственно в созданный компонент React через props.

Моя главная цель — позволить пользователю создавать несколько элементов с несколькими правилами стиля, а затем (в конце концов) экспортировать созданные элементы вместе с их стилем.

Я импортировал JSS из-за функции createStyleSheet, которая создает стили на основе на CSS-объекте JavaScript (который исходит из ввода CodeMirror) и из-за того, что напрямую внедренный стиль через props нельзя использовать повторно (поскольку он не содержит классов, только свойства). Проблема с JSS в том, что он генерирует стили в виде .mySpecialClass-0-1 {...}

Это код, который я использую, когда пользователь применяет стиль (при нажатии).

 onStyleInput(e) {
        e.preventDefault();
        try {
            let style= cssToObject(this.codeMirror.getValue(), {camelCase: true});
            this.styleSheet = jss.createStyleSheet(style, {link: true}).attach();
            console.log(this.styleSheet);
        }
        catch (exception) {
            // console.log("Something went wrong, check your css syntax");
            console.log(exception);
        }
    }

Результатом, который я ожидал от JSS, был стиль в виде .mySpecialClass {...} без уникальных идентификаторов.

Я просматривал JSS API, но, похоже, нет доступного логического значения для переключения генерации уникального идентификатора.

Есть ли лучший способ достичь моей цели?

Заранее спасибо!


person Regentix    schedule 13.01.2019    source источник


Ответы (1)


Самый простой способ иметь классы JSS без идентификатора - сделать его «глобальным» стилем. Это означает, что у нас есть глобальные стили CSS, которые не привязаны к элементам индивидуально. Вместо того, чтобы просто поместить/установить имя класса HTML без реального использования результата JSS. Они называют это «глобальными селекторами» в разделе «плагин» на своих страницах документации.

Вы можете найти документацию здесь: https://cssinjs.org/jss-plugin-global?v=v10.0.0-alpha.7

person Bayu    schedule 13.01.2019