Как работать с svg иконками в React?

123
27 ноября 2019, 14:50

Сейчас просто вставляю несколько иконок в файл Icons.js, и импортирую уже где необходимо. Вот пример иконки:

class IconPlus extends React.Component {
        static defaultProps = {
            width: '7',
            height: '7',
            stroke: '#d5d5d5',
            fill: '#000'
        }
        render() {
            return (
                <svg className="icon-plus" width={this.props.width} height={this.props.height} fill={this.props.fill}
                     stroke={this.props.stroke} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6.93 6.93">
                    <path stroke-linecap="round" stroke-miterlimit="10" strokeWidth="1.1" d="M3.47.55v5.83M6.38 3.47H.55"/>
                </svg>
            )
        }
    }

И появляются всякие неудобства: ошибки что атрибут stroke-linecap должен быть strokeLinecap и т.п. Как автоматизировать и сделать удобнее?

Answer 1

Если вы хотите смешивать SVG и JSX, то вам нужно некоторые аттрибуты переписать, как вы уже заметили.

Как этого не делать - вариантов несколько

  1. Уберите xmlns="http://www.w3.org/2000/svg" и просто вставляйте собранную строку

    render: function() {
        return (
            <svg viewBox="0 0 120 120">
                <circle cx="60" cy="60" r="50"/>
            </svg>
        );
    }
    
  2. Вариант отправить рекат в пешее эротическое путешествие с его проверками:

    render: function() {
       return <span dangerouslySetInnerHTML={{__html: "<svg>...</svg>"}} />;
    }
    
  3. Хранить картинки отдельно, импортировать как модули и стилизовать их через css.

READ ALSO
Хранение атрибутов товаров

Хранение атрибутов товаров

Задача может быть тривиальна, но споров в сети многоЕсть желание сделать свой интернет магазин

109
Создать запрос для базы MYSQL имея готовую бд

Создать запрос для базы MYSQL имея готовую бд

Есть огромная бд с кучей таблицМне нужно составить sql запрос, чтобы создать точно такую же бд

103
Локальный запуск google-app-engine с MySQL

Локальный запуск google-app-engine с MySQL

Не получается никак запустить локальный сервер google-app-engine с использованием базы MySQL

118
Подскажите как сверстать полукруг

Подскажите как сверстать полукруг

Подскажите как сверстать этот зеленый полукругСейчас он сделан на clip-path, но у него плохая поддержка

133