Как установить массив useState в цикле, чтобы добавить больше элементов в массив по умолчанию? - PullRequest
1 голос
/ 01 октября 2019

У меня был массив с 10 элементами. Сначала я добавил 5 элементов в useState

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

Затем, когда я добавил 5 элементов, я получил не ожидаемый результат

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.stack.imgur.com/lB0JD.png

Как вставить 5 элементов в массив useState? Извините за мой плохой английский.

Ответы [ 2 ]

2 голосов
/ 01 октября 2019

Альтернативой распространенному синтаксису может быть:

setDataList(dataList.concat(newArr2))
1 голос
/ 01 октября 2019

Вы распространяете свой текущий массив, но не новый:

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