Реагирует на перехваты useState с массивом

#reactjs #react-hooks #use-state

#reactjs #реагирующие крючки #use-state

Вопрос:

Как вставить новый элемент в useState array React hook? Мой код не работает!! Остался только последний документ.data()

 const [friends, setFriends] = useState([]);

db.collection('users').doc(user.email).collection('friends').onSnapshot(snapshot => (  
    snapshot.docs.map(doc => {
        setFriends(...friends, doc.data());
    })
))
  

Комментарии:

1. можете ли вы немного подробнее объяснить, чего вы ожидаете, и есть ли у вас какие-либо ошибки?

Ответ №1:

Сделайте это так

Таким образом, вы уверены, что делаете все правильно

 setFriends(prevFriends => [...prevFriends, doc.data()]);

  

Ответ №2:

Просто заключите значения в скобки внутри вашего setFriends вызова. Это делает его массивом.

 setFriends([...friends, doc.data()]);