Другой способ обхода - использование gatsby-plugin-react-svg
. Настроить очень легко. Вам нужно позаботиться только о нескольких вещах, и вы легко сможете добиться того, чего хотите. В вашем gatsby-config. js:
plugins: [
{
resolve: "gatsby-plugin-react-svg",
options: {
rule: {
include: /assets/
}
}
}
]
Имейте в виду, что /assets/
- это просто регулярное выражение, а не сам путь. Если вы хотите использовать другую папку (например, /svg/
), вам нужно будет установить ее как include: /svg/
. Неважно, насколько глубока ваша папка.
Еще одна вещь, которую нужно принять во внимание, - это иметь только SVG внутри этой папки, и у них должен быть другой id
(обычно экспортируемый SVG имеет стандарт id
и если они повторяются, у вас возникнут проблемы с импортом SVG).
После того, как вы подготовили свою настройку, просто импортируйте SVG как компонент React:
import Icon from "./path/assets/icon .svg "; // другой код
return <div>
<Icon className="myIcon" />
</div>;
Теперь вы можете настроить таргетинг на SVG и оформить его так, как вы sh. Если он находится внутри контейнера position: relative
, вы можете легко применить стили предоставленного вами псевдоселектора ::after
.