Es tut mir leid, wenn dies eine der Fragen ist, die grundlegend falsch ist, wie React funktionieren soll, aber ich habe eine Wand getroffen.drawImage() in React on Rails funktioniert nicht
Ich baue eine Rails-App mit React, die versucht, ein HTMLCanvas-Element zu erstellen, ein Bild auf diese Leinwand zu zeichnen und dann mit Benutzereingaben zu aktualisieren, um Text auf das Bild zu setzen.
class Image extends React.Component {
componentDidMount(){
this.updateCanvas();
}
updateCanvas(){
// var imageObj = new Image();
// imageObj.src = './app/assets/image.jpg'
<Image ref='imageObj' source={{uri: '/assets/image.jpg'}} style={{width: 40, height: 40}} />
var ctx = this.refs.canvas.getContext('2d');
ctx.drawImage(this.refs.imageObj, 0, 0);
}
render() {
return (
<canvas ref='canvas' width={867} height={600}/>
);
}
}
Ich habe auskommentierten Code hinzugefügt, um andere Dinge zu zeigen, die ich erfolglos versucht habe.
Und mein HTML ist:
<%= react_component('Image') %>
Als ich das laufen, erhalte ich:
Uncaught Typeerror: Fehler 'drawImage' auf 'CanvasRenderingContext2D' auszuführen: Der angegebene Wert ist nicht vom Typ ' (HTMLImageElement oder HTMLVideoElement oder HTMLcanvasElement oder ImageBitmap) '
Basierend auf this answer, vermute ich, dass das Problem damit zu tun hat, dass ImageObj.src nicht der richtige Pfad ist, nicht die richtige Eigenschaft usw., aber ich bin Ich bin mir nicht sicher, wie ich vorgehen soll es.
Danke für jede Hilfe zu diesem Thema!
Ihre benutzerdefinierte Image-Komponente gibt keinen DOM-Knoten für das Image zurück. Probiere 'ReactDOM.findDOMNode (this.refs.imageObj)' (und vergiss nicht 'ReactDOM von 'react-dom'' zu importieren) –