Можно ли встроить разметку SVG в компонент ReactJS?
render: function() {
return (
<span>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmln ...
</span>
);
}
Приводит к ошибке:
Атрибуты пространства имен не поддерживаются. ReactJSX - это не XML.
Какой самый легкий способ сделать это. Использование чего-то вроде React ART является излишним для того, что я пытаюсь сделать.
javascript
svg
reactjs
Николай
источник
источник
<svg id="Layer_1">
(или даже лучше без идентификатора). Изменить: вот пример: jsbin.com/nifemuwi/2/edit?js,outputОтветы:
Обновление 2016-05-27
Начиная с React v15, поддержка SVG в React является (близкой к?) 100% паритетом с текущей поддержкой SVG в браузере ( источник ). Вам просто нужно применить некоторые синтаксические преобразования, чтобы сделать его JSX-совместимым, как вы уже сделали для HTML (
class
→className
,style="color: purple"
→style={{color: 'purple'}}
). Для любого атрибута с пространством имен (разделенных двоеточиями), напримерxlink:href
, удалите:
и используйте вторую часть атрибута с заглавной буквы, напримерxlinkHref
. Вот пример СВГ с<defs>
,<use>
и встроенных стилей:Демо-версия рабочего кода
Дополнительные сведения о конкретной поддержке см. В списке поддерживаемых атрибутов SVG в документации . И вот (теперь закрытая) проблема GitHub, которая отслеживала поддержку атрибутов SVG с пространством имен.
Предыдущий ответ
Вы можете выполнить простую вставку SVG без необходимости
dangerouslySetInnerHTML
, просто удалив атрибуты пространства имен. Например, это работает:В этот момент вы можете подумать о добавлении таких свойств
fill
или о том, что еще может быть полезно настроить.источник
.class1, .class2{fill: #005baa;}
«Как я могу это исправить?classB
и она сработала: codepen.io/acusti/pen/BVJzNgЕсли у вас есть просто статическая строка svg, которую вы хотите включить, вы можете использовать
dangerouslySetInnerHTML
:и React будет включать разметку напрямую, не обрабатывая ее вообще.
источник
По словам разработчика реакции , вам не нужно пространство имен xmlns. Если вам нужен атрибут,
xlink:href
вы можете использовать xlinkHref из реакции 0.14пример
источник
Если вы хотите загрузить его из файла, вы можете попробовать использовать React-inlinesvg - это довольно просто и понятно .
источник