Reputation: 65
I import a reactive class component into the app, which (in the component that I import) have links to images, as a result of running the application, images are not loaded, I do not understand how to fix the problem. First link http
load is succsessful, but slider-media/images/logreg-bg.jpg
is not
import React from 'react'
import './slider.css'
class Slider extends React.Component {
constructor(props) {
super(props)
this.state = {
images: [
"https://s3.us-east-2.amazonaws.com/dzuz14/thumbnails/canyon.jpg",
"slider-media/images/logreg-bg.jpg",
],
currentIndex: 0,
translateValue: 0
}
}
goToPrevSlide = () => {
if (this.state.currentIndex === 0)
return;
this.setState(prevState => ({
currentIndex: prevState.currentIndex - 1,
translateValue: prevState.translateValue + this.slideWidth()
}))
}
goToNextSlide = () => {
if (this.state.currentIndex === this.state.images.length - 1) {
return this.setState({
currentIndex: 0,
translateValue: 0
})
}
this.setState(prevState => ({
currentIndex: prevState.currentIndex + 1,
translateValue: prevState.translateValue + -(this.slideWidth())
}));
}
slideWidth = () => {
return document.querySelector('.slide').clientWidth
}
render() {
return (
<div className="slider">
<div className="slider-wrapper"
style={{
transform: `translateX(${this.state.translateValue}px)`,
transition: 'transform ease-out 0.45s'
}}>
{
this.state.images.map((image, i) => (
<Slide key={i} image={image} />
))
}
</div>
<LeftArrow
goToPrevSlide={this.goToPrevSlide}
/>
<RightArrow
goToNextSlide={this.goToNextSlide}
/>
</div>
);
}
}
const Slide = ({ image }) => {
const styles = {
backgroundImage: `url(${image})`,
backgroundSize: 'cover',
backgroundRepeat: 'no-repeat',
backgroundPosition: '50% 60%'
}
return <div className="slide" style={styles}></div>
}
const LeftArrow = (props) => {
return (
<div className="backArrow arrow" onClick={props.goToPrevSlide}>
<i className="fa fa-arrow-left fa-2x" aria-hidden="true"></i>
</div>
);
}
const RightArrow = (props) => {
return (
<div className="nextArrow arrow" onClick={props.goToNextSlide}>
<i className="fa fa-arrow-right fa-2x" aria-hidden="true"></i>
</div>
);
}
export default Slider
Upvotes: 0
Views: 177
Reputation: 65
One way to solve the problem is to import images this way, and then use variables instead of links.
import forestOutemn from "./slider-media/images/logreg-bg.jpg"
import darkForest from "./slider-media/images/dark-forest.jpg"
import yellowForest from "./slider-media/images/yellow-dark-forest.jpg"
Upvotes: 1