JSX on images
React exercise2
by Jacques Surveyer
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-dom.min.js"></script>
<div id="container"></div>
CSS
.image { opacity: 0; transition: opacity 5.0s; }
.image-loaded { opacity: 1; }
Babel + JSX
var ImageComponent = React.createClass({
getInitialState: function() {
return {
loaded: false,
};
},
onImageLoad: function() {
if (this.isMounted()) {
this.setState({ loaded: true });
}
},
componentDidMount: function() {
var imgTag = ReactDOM.findDOMNode(this.refs.img);
var imgSrc = imgTag.getAttribute('src');
var img = new window.Image();
img.onload = this.onImageLoad;
img.src = imgSrc;
},
render: function() {
var { className, ...props } = this.props;
var rootClassName = className ? className + ' image' : 'image';
if (this.state.loaded) {
rootClassName += ' image-loaded';
}
return <img ref="img" {...props} className={rootClassName} />;
}
});
ReactDOM.render(
<ImageComponent src="http://www.pixoftoronto.com/wp-content/gallery/spring2017/awcbu.jpg" width="700" />,
document.getElementById('container')
);