import React, { Component } from 'react'; import './Image.css'; class Image extends Component { constructor(props) { super(props); /* * Expected props: * - img: require(imgUrl) * - headlineA: String * - headlineB: String */ this.currentImageIs_A = true; } componentDidMount() { this.fadeIn("a"); } componentDidUpdate() { const fadeInLetter = this.currentImageIs_A ? "b" : "a"; const fadeOutLetter = this.currentImageIs_A ? "a" : "b"; this.fadeIn(fadeInLetter, this.props.img); this.fadeOut(fadeOutLetter); this.currentImageIs_A = !this.currentImageIs_A; } fadeIn(letter) { /* * Fade in */ //Image const elements = document.getElementById(letter).getElementsByClassName("Image_element"); for (var i = 0; i < elements.length; i++) { const element = elements[i]; //Change picture const imgUrl = this.props.img; element.style.backgroundImage = "url(" + imgUrl + ")"; //Animation this.timeout_fadeIn(element,i); }; } fadeOut(letter) { /* * Fade out */ //Image const elements = document.getElementById(letter).getElementsByClassName("Image_element"); for (var i = 0; i < elements.length; i++) { const element = elements[i]; //Animation this.timeout_fadeOut(element,i); }; } timeout_fadeIn(element,i) { setTimeout(function() { element.classList.remove("Image_element-fade-out"); element.classList.add("Image_element-fade-in"); }, i*100); } timeout_fadeOut(element,i) { setTimeout(function() { element.classList.remove("Image_element-fade-in"); element.classList.add("Image_element-fade-out"); }, i*100); } render() { if(this.props.img !== null) { //displayed return (