【发布时间】:2017-11-22 04:14:38
【问题描述】:
我需要渲染 .svg 文件。我不想使用危险的SetInnerHTML。如果我直接复制 svg 内容并从组件渲染它,我能够成功渲染 svg。
但是,这不是很可重用。我不想从每个 .svg 文件中复制内容。我希望能够导入一个 svg 文件并将其传递到我的组件中,然后再渲染内容。
这是我到目前为止所做的,但它没有渲染我的 svg。
我创建了一个接受导入的 svg 文件的组件,如下所示:
import React from "react";
class SvgComponent extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
props.svg // this works if I copy my .svg contents here (<svg>....</svg>)
);
}
};
SvgComponent.propTypes = {
svg: React.PropTypes.string.isRequired,
};
export default SvgComponent;
这是我使用该组件的方式:
import mySvg from './images/mySvg.svg';
const Icon = (props) => {
return (
<svgComponent svg={mySvg} />
);
};
Icon.propTypes = {
icon: React.PropTypes.string.isRequired,
};
export default Icon;
这不起作用——它不会在网页上显示我的 svg,甚至不会在 dom 中显示。当我检查页面时,我看到的只是一个空的 svgComponent:
<svgComponent />
任何关于让 .svg 文件在 react 中显示的帮助都会很棒!
【问题讨论】:
-
这不是重复的。我不想危险地使用SetInnerHTML。
-
很公平。我错过了问题的那一部分。