javascript - 在 ReactJs 中使用映射函数时出现错误“无法读取未定义的属性‘映射’”
问题描述
我刚刚开始探索 React,我正在尝试在我的 React 项目中添加滑块,但这不起作用我不知道为什么,所以有人可以指导我找到问题并解决它。并且下面的代码出现了诸如“TypeError:无法读取未定义的属性'map'”之类的问题
这是代码:
class Slider extends React.Component {
constructor(props) {
super(props);
this.IMAGE_PARTS = 4;
this.changeTO = null;
this.AUTOCHANGE_TIME = 4000;
this.state = { activeSlide: -1, prevSlide: -1, sliderReady: false };
}
componentWillUnmount() {
window.clearTimeout(this.changeTO);
}
componentDidMount() {
this.runAutochangeTO();
setTimeout(() => {
this.setState({ activeSlide: 0, sliderReady: true });
}, 0);
}
runAutochangeTO() {
this.changeTO = setTimeout(() => {
this.changeSlides(1);
this.runAutochangeTO();
}, this.AUTOCHANGE_TIME);
}
changeSlides(change) {
window.clearTimeout(this.changeTO);
const { length } = this.props.slides;
const prevSlide = this.state.activeSlide;
let activeSlide = prevSlide + change;
if (activeSlide < 0) activeSlide = length - 1;
if (activeSlide >= length) activeSlide = 0;
this.setState({ activeSlide, prevSlide });
}
render() {
const { activeSlide, prevSlide, sliderReady } = this.state;
return (
<div className={classNames('slider', { 's--ready': sliderReady })}>
<p className="slider__top-heading">Travelers</p>
<div className="slider__slides">
{this.props.slides.map((slide, index) => (
<div
className={classNames('slider__slide', { 's--active': activeSlide === index, 's--prev': prevSlide === index })}
key={slide.city}
>
<div className="slider__slide-content">
<h3 className="slider__slide-subheading">{slide.country || slide.city}</h3>
<h2 className="slider__slide-heading">
{slide.city.split('').map(l => <span>{l}</span>)}
</h2>
<p className="slider__slide-readmore">read more</p>
</div>
<div className="slider__slide-parts">
{[...Array(this.IMAGE_PARTS).fill()].map((x, i) => (
<div className="slider__slide-part" key={i}>
<div className="slider__slide-part-inner" style={{ backgroundImage: `url(${slide.img})` }} />
</div>
))}
</div>
</div>
))}
</div>
<div className="slider__control" onClick={() => this.changeSlides(-1)} />
<div className="slider__control slider__control--right" onClick={() => this.changeSlides(1)} />
</div>
);
}
}
const slides = [
{
city: 'Paris',
country: 'France',
img: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/paris.jpg',
},
{
city: 'Singapore',
img: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/singapore.jpg',
},
{
city: 'Prague',
country: 'Czech Republic',
img: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/prague.jpg',
},
{
city: 'Amsterdam',
country: 'Netherlands',
img: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/amsterdam.jpg',
},
{
city: 'Moscow',
country: 'Russia',
img: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/moscow.jpg',
},
];
export default Slider
我收到了这个错误:
伙计们,我该如何解决这个问题?有没有什么办法解决这一问题?
解决方案
你有slides
你的类组件内部,所以你不需要从props
. 您可以在没有任何媒介的情况下访问幻灯片。像这样的东西:
{this.slides.map((slide, index) => (<TheSLiderElement/>)}
推荐阅读
- windows - 如何将记事本的默认unicode设置为UTF8?
- javascript - 在 Amcharts4 range.contents.fill 不适用于 Lineseries.propertiesField.fill
- node.js - 如何防止我的图书馆的消费者安装我的 devDependencies?
- javascript - React.js,在 useEffect 挂钩中,window.location.href 不会停止中断进一步的代码执行
- python - xclip 没有从 pexpect 获取标准输入,或者 pexpect 没有发送?
- c# - 使用 MailboxAddress(String) 构造函数发送带有 mailKit 过时警告的电子邮件
- bash - VSCode 打开工作区时如何运行 bash 命令或设置环境变量
- spring-cloud-gateway - Retry GatewayFilter 在 Spring Cloud Gateway 上无法按预期工作
- flutter - 屏幕加载时如何仅调用一次 bloc 事件
- pdf - 如何为 pandoc 中的代码块添加边框?