Reputation: 59
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
Reputation: 2438
The alternative to spread syntax could be:
setDataList(dataList.concat(newArr2))
Upvotes: 3
Reputation: 5763
You are spreading your current array, but not the new one:
setDataList([...dataList, ...newArr2])
Upvotes: 3