setState 在数组内循环的问题 Next.js

Problem with setState looping inside an array Next.js

无法找到解决我的问题的方法,它第一次正确循环,但在数组中循环两次后出现错误“TypeError:props.imgData[index] 未定义”。

这是我的代码:

import React, { useEffect } from "react";

import Image from 'next/image';

export default function SimpleSlider(props) {
   
  let matchingIdArray = props.imgData.findIndex(element => {
    return element.id === props.id 
  })
  
let [index,setIndex] = React.useState(matchingIdArray )
console.log(index)

  let next = () => {    
   setIndex(prev => 
      {
      if(prev <props.imgData.length -1 )       {
       return   prev +1      
        }
        else {
       setIndex(0)
        }
    } )     
  } 
  return (
    <section className="w-full h-screen mx-auto">
  
  <div onClick={next}  className=" w-3/4 mx-auto h-screen  ">      
  <Image src={props.imgData[index].urls.raw} width={props.imgData[index].width} height={props.imgData[index].height} quality={100}  /> 
  </div>
         
    </section>
  )
}

为什么 setIndex(0) 而不是 return 0 ?在这种情况下你没有返回任何东西所以你实际上在做 setState(undefined)

根据您的代码,它获取 setIndex 本身来设置函数 when

prev > props.imgData.length -1

尝试 return 0 而不是 setIndex(0)

let next = () => {    
   setIndex(prev => 
      {
      if(prev <props.imgData.length -1 ){
       return   prev +1;
        }
        else {
       return 0;
        }
    } )     
  }