import PropTypes from "prop-types"; import React from "react"; import {Image} from "react-konva"; class ImageComponent extends React.Component { static imageCaches = {}; static propTypes = { src: PropTypes.string.isRequired, x: PropTypes.number.isRequired, y: PropTypes.number.isRequired, width: PropTypes.number.isRequired, height: PropTypes.number.isRequired, opacity: PropTypes.number.isRequired, }; state = { image: null }; componentDidMount() { if (ImageComponent.imageCaches[this.props.src]) { this.setState({image: ImageComponent.imageCaches[this.props.src]}); return; } const image = new window.Image(); image.src = this.props.src; image.onload = () => { this.setState({image}); ImageComponent.imageCaches[this.props.src] = image; } } render() { return ( ) } } export default ImageComponent;