Reactjs React Swiper.js删除从数组中呈现的索引处的幻灯片

Reactjs React Swiper.js删除从数组中呈现的索引处的幻灯片,reactjs,swiper,Reactjs,Swiper,我似乎不知道如何删除使用Swiper.js从数组中呈现的当前索引处的幻灯片 我试过: function deleteSlide() { swiper.current.swiper.removeSlide(currentIndex); var temp = slides; temp.splice(currentIndex, 1); setSlides(temp); } 但问题是,当状态更新时,它会执行双重删除。如果我只运行removeSlide,它会删除幻灯片,但

我似乎不知道如何删除使用Swiper.js从数组中呈现的当前索引处的幻灯片

我试过:

function deleteSlide() {
    swiper.current.swiper.removeSlide(currentIndex);
    var temp = slides;
    temp.splice(currentIndex, 1);
    setSlides(temp);
}
但问题是,当状态更新时,它会执行双重删除。如果我只运行
removeSlide
,它会删除幻灯片,但我的阵列不会更新。如果我做了其他事情,我的阵列会更新,但幻灯片在我刷卡之前不会更新。到目前为止,将幻灯片添加到阵列末尾效果良好

在没有显式调用removeSlide的情况下,我尝试了以下操作:

useEffect(() => {
    swiper.current.swiper.update();
}, [slides]);
但我不太清楚为什么这实际上没有更新Swiper实例。我认识到,当状态在
deleteSiled
中更新时,也不会调用此函数,我也不完全确定原因

理想的行为是当前视图保持不变,并且当删除当前幻灯片时,
index+1
处的幻灯片将滑动到位。如果删除最后一张幻灯片,则会滑到最后第二张幻灯片,最后一张幻灯片将被删除。只要我能够正确地更新Swiper实例,我就可以处理这个问题

我该怎么做?感谢您的帮助。

解决了以下问题:

function deleteSlide() {
    var temp = [...slides];
    temp.splice(currentIndex, 1);
    setSlides(temp);
}
只需使用spread
操作符即可正确复制阵列。尽管值得注意的是,这会重置所有其他渲染幻灯片的状态,但我需要弄清楚如何修复该问题

编辑:。为了防止重新渲染所有其他数组元素,每个元素的键在渲染中必须是唯一的。通过将键设置为计数(严格递增)进行修复