Buzz
Buzz

Reputation: 59

How can set array useState in loop for add more item in default array?

I had an array with 10 item First, I added 5 item in useState

const [dataList, setDataList] = useState([])
useEffect(() => {
  const newArr = []
  for (var i = 0; i < 5 && i < data.length; i++) {
       newArr.push(data[i])
      }
      setDataList(newArr)
    }, [])

Then, when I added 5 item left, I got not expect result

onPress = () => {
    const newArr2 = []
    for (var i = 5; i < 10 && i < data.length; i++) {
        newArr2.push(data[i])
    }
    setDataList([...dataList, newArr2])
    console.log("dataList", dataList)
}

https://i.sstatic.net/lB0JD.png

How can I push 5 item left into the useState array? Sorry for my bad English.

Upvotes: 2

Views: 3457

Answers (2)

Bakhtiiar Muzakparov
Bakhtiiar Muzakparov

Reputation: 2438

The alternative to spread syntax could be:

setDataList(dataList.concat(newArr2))

Upvotes: 3

Chris B.
Chris B.

Reputation: 5763

You are spreading your current array, but not the new one:

setDataList([...dataList, ...newArr2])

Upvotes: 3

Related Questions