Хорошо
Итак, вот что я нашел:
1-й: Вы переходите на 100%: так что, если покажете 3 элемента, все три элемента будут скользить, мне удалось справитьсяэто вручную, изменяя 100% до 250px (возможно, есть лучший способ, но это идея).
transform: translateX(250px);
&.is-reversing {
transform: translateX(250px)
}
Во-вторых: ваш getOrder вернул
items.length - order
вместо
items.length + order
вот так
getOrder(index) {
const { items } = this.props
const { ref } = this.state
const order = index - ref
if (order >= 0) {
return order;
}
else{
return items.length + order;
}
}
Тогда для слайдов у NEXT не было результата, когда ссылка была больше items.length
if (newRef <= items.length) {
this.setState({
ref: newRef,
isSet: false,
isReversing: false,
}, this.resetSet)
}else{
this.setState(
{
ref: 1,
isSet: false,
isReversing: false
},
this.resetSet
);
}
иВаш слайд PREV должен работать следующим образом:
if (newRef >= 0) {
this.setState({
ref: newRef,
isSet: false,
isReversing: true,
}, this.resetSet)
}else{
this.setState(
{
ref: 8,
isSet: false,
isReversing: true
},
this.resetSet
);
}
, как вы можете видеть, я добавил некоторые вещи, такие как 250px и "8", которые можно добавить, например, 250px - это ширина элемента, а 8 - последний индексмассив.
также я понял, что ваш переход всегда скользит влево.Я могу смотреть дальше, как только у меня будет время, но сейчас это то, что мне удалось сделать,
Надеюсь, это поможет, Не уверен, что я хорошо объяснил, но я старался изо всех сил.
повеселиться
https://stackblitz.com/edit/carousel-pov-rvftku
Редактировать: добавлена вилка карусели на стеке блиц