Обновление массива setState, но не удаление предыдущего

#reactjs #use-state

Вопрос:

У меня есть небольшой вопрос. Давайте предположим, что этот код

  const [ChatDetailsRender, setChatDetailsRender] = useState([]);

 //ChatDetailsRender it s equal= {10,20}
 
 array=[1,2,3,4]

 array.forEach((nr)=>{
 setChatDetailsRender();
 //here some code to add the array for each value in useState})
 

Это простой пример того, что я хочу сделать, и у меня есть некоторые трудности, потому что у меня также есть некоторые вызовы базы данных. Все выглядит нормально, но как я могу обновить данные о пользователях ChatDetails без перезаписи данных? например, просто объединить эти 2 массива. Извините, я думаю, что эти вопросы уже были здесь, но все, что я могу найти, это примеры с объектами в useState, и мой пример содержит всего лишь простой массив. Спасибо.

Ответ №1:

Вы можете связать новое значение с существующим значением во время обновления и использовать подход обратного вызова для задания состояния.

 const [ChatDetailsRender, setChatDetailsRender] = useState([]);

 //ChatDetailsRender it s equal= {10,20}
 
 array=[1,2,3,4]
 setChatDetailsRender(previousChatDetails => previousChatDetails.concat(array));