reactjs - React:SVG 通过 id 或 class 动态添加 CSS
问题描述
在 React 我有一个 svg 文件,例如mySVG.svg
<svg width="50" height="50" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg">
<rect id="Unit1" class="class1" x="0" y="0" width="10" height="10" fill="blue"/>
<rect id="Unit2" class="class1" x="10" y="10" width="10" height="10" fill="blue"/>
<rect id="Unit3" class="class2" x="20" y="20" width="10" height="10" fill="blue"/>
</svg>
然后,在组件文件Example.tsx
中,我想根据传入的道具动态设置 svg 的颜色
import { ReactComponent as mySvg} from 'assets/mySVG.svg';
export function Example(props:{highlighted:string}):ReactElement {
if (props.highlighted === 'Unit1') {
return (
<mySvg
//set unit 1 fill color to red
/>
);
}
return (
<mySvg />
);
}
如何根据 svg 路径的 id 和 className 动态设置 svg 的填充颜色?
导入具有定义颜色的静态 css 文件将不起作用,因为我需要它动态工作。
解决方案
您可以操作要导入的文件,但我认为最简单的方法是将 svg 创建为组件。
在此处查看示例: https ://codesandbox.io/s/happy-galois-1tfce
编辑:向 svg 内容添加节点操作和重新序列化。
推荐阅读
- javascript - 在 JavaScript 中从对象数组中的元素中拆分字符
- r - 在 fixst::etable() 中对固定效果进行分组
- math - 垂直定位传感器的磁力计航向计算
- java - java中的哈希函数
- arrays - Swiftui - 我如何在 Firestore 中查询我的数组?
- snowflake-cloud-data-platform - 如何用数组转置雪花表
- javascript - Selection: incorrect isCollapsed value for deselecting by clicking on selected text
- c++ - Ray and Plane Intersection in C++ (Plane defined as normal and D)
- python-3.x - An issues with running "pip install Beautifulsoup" on cmd
- machine-learning - Pytorch VNet final softmax activation layer for segmentation. Different channel dimensions to labels. How do I get prediction output?