代码在这个codesandbox.io - https://codesandbox.io/s/react-slider-forked-wu0q6中。
if (newActiveIndex === slides[slides.length - 1].index) {
const { slides } = this.state;
// index (10-3) to (10)
const add = slides.slice(slides.length - 3);
const newSlides = slides.unshift(add);
console.log("newSlides", newSlides);
this.setState({
slides: newSlides
});
} else {
this.setState({
slides: slides
});
}
};
我尝试使用unshift方法,但是当我控制台记录它时,它返回一个数字,而不是一个数组。我想要的是0,1,2,3,4,5变成3,4,5,0,1,2
发布于 2022-01-20 13:17:54
您使用了两个组件,每个组件都有一个状态。当您从dots组件更改状态时,图像组件不知道有更改。因此,解决方案是在App.js中添加活动状态,并将其作为两个组件的支持传递给=>,如果从点中更改它,图像将具有最新的活动索引。
import React from "react";
import ImageSlider from "./components/ImageSlider";
import SliderDots from "./components/SliderDots";
import "./styles.css";
const SliderData = require("./SliderData.json");
/**
* Convert this to class since you will be working with class!
*/
export default class App extends React.Component {
state = {
selectedIndex: 2
};
setSelectedIndex = (i) => {
this.setState({ selectedIndex: i });
};
render() {
return (
<>
<ImageSlider
slides={SliderData}
selectedIndex={this.state.selectedIndex}
setSelectedIndex={this.setSelectedIndex}
/>
<SliderDots
slides={SliderData}
selectedIndex={this.state.selectedIndex}
setSelectedIndex={this.setSelectedIndex}
/>
</>
);
}
}
https://stackoverflow.com/questions/70786451
复制相似问题