我試圖創建的圖像元素變爲一個內聯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裝載機語法 –