Как я могу изменить цвета значков svg в React?

#reactjs #svg

#reactjs #svg

Вопрос:

Svg-файл:

 <svg width="187" height="186" viewBox="0 0 187 186" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path fill-rule="evenodd" clip-rule="evenodd" d="...there`s a lot of coordinates..." fill="#4285F4"/>
  <circle cx="93" cy="93" r="88" stroke="#4285F4" stroke-width="10"/>
</svg>
 

Мне нужно изменить цвет «заливки» внутри «пути» и цвет «обводки» внутри «круга». Я попытался сделать это так (удалил «заливку» внутри «пути» и «обводку» внутри «круга» и переместил его на «svg»):

 <svg width="187" height="186" viewBox="0 0 187 186" fill="currentColor" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
  <path fill-rule="evenodd" clip-rule="evenodd" d="...there`s a lot of coordinates..." />
  <circle cx="93" cy="93" r="88" stroke-width="10"/>
</svg>
 

И используйте это так:

 import {ReactComponent as LogOutIcon} from "../images/logOutConfirmIcon.svg";

<LogOutIcon stroke={"#c00000"} fill={"#c00000"} />
 

И это сработало для обводки, но оно также заполняет все пустое пространство внутри значка.

Комментарии:

1. То d-path , что вы не включили, требуется для оценки вашей проблемы.

Ответ №1:

Итак, я просто создал отдельный компонент, который возвращает svg с реквизитами в качестве значений:

 const LogOutConfirmIcon = (props) => {
    return (
        <svg width="187" height="186" viewBox="0 0 187 186" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path fillRule="evenodd" clipRule="evenodd" d="...there`s a lot of coordinates..." fill={props.color} />
            <circle cx="93" cy="93" r="88" stroke={props.color} strokeWidth="10"/>
        </svg>
    );
};