我试图创建的图像元素变为一个内联SVG元素一个作出反应的组成部分。我想这样做,所以我可以从文件中插入svg元素以处理与CSS的样式。替换图像元素与联SVG在阵营
同样重要的是,我用我的项目的创建 - 反应 - 应用程序库,并会喜欢能够做到这一点没有弹出我的项目。
变量req
返回一个有效的svg元素,我设置this.state.response
,然后我尝试更新,但是,它不起作用。使用下面的代码,我得到以下错误:
A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.
代码:
class Svg extends Component {
constructor(props) {
super(props);
this.state = {
response: undefined
};
this.toSvg(this.props.src);
}
toSvg(img) {
const imageUrl = img;
let self = this;
// Create new XML Http Request to get data
let request = new XMLHttpRequest();
request.open('GET', imageUrl, true);
request.onreadystatechange = function() {
if (this.readyState === 4) {
if ((this.status >= 200) && (this.status < 400)) {
// Success!
// Returns the HTML object
let req = request.responseXML.getElementsByTagName('svg')[0];
self.setState({
response : req
});
} else {
// Error :(
}
}
};
request.send(null);
}
render() {
if (this.state.response === undefined) {
console.log('no response rendering standard img');
return <img src={this.props.src} alt='icon' />;
}
else {
console.log('now we update');
return this.state.response;
}
}
}
如果有人知道如何处理SVG元素替换img元素没有错误,这将是真棒。
忘了提,我是使用create-反应,应用程序,所以希望能够在不弹出我的项目使用:d我会更新我的问题 – Clanket
我更新了答案。我希望你会成功。 – oklas
后一种方法会导致创建反应的应用内的下面的错误:“意外‘!’在“URL装载机?极限= 10000!./ drawing.svg”。不要使用进口语法来配置的WebPack装载机”导入/无的WebPack装载机语法 –