db = fire.firestore();
                  
                  
                      db.collection("events").doc(id).delete().then(() => {
                  
                  
                        console.log("Document successfully ", deletedEvent);
                  
                  
                        setDeletedEvent('deleted');
                  
                  
                  
                  
                  
                      }).catch((error) => {
                  
                  
                        console.error("Error removing document: ", error);
                  
                  
                      });
                  
                  
                  
                  
                  
                    }
                  
                  
                  Почему не рендерится? Я нажимаю на удалить, и устанавливаю  setDeletedEvent('deleted') чтобы произошел перерендер. item то удаляется из базы, но на старнице это видно только после обновления браузера..
                  
                  
                
можете добавить useEffect с параметром на длину массива из элементов. когда 1 удаляется/добавляется, изменяется и длина массива
Спасибо! Но почему изменение стейта не рендерит то? Стейт точно меняется, и скорей всего все рендерится, но почему тогда карточка пропадает только после обновы странички?
Покажите как вы запрашиваете данные
useEffect(() => { // GETTING DATA FROM FIREBASE const fetchData = async () => { const db = fire.firestore(); const data = await db.collection("events").get(); setEvents(data.docs.map((doc) => ({ ...doc.data() }))); }; fetchData(); }, []);
Теперь открывайте документацию и читайте про юзэфект еще раз
когда стоит пустой массив зависимостей, данный хук срабатывает только 1 раз и только при маунте компонента. докиньте туда длину массива, как описал выше
Разобрался, благодарю!
А лучше вообще запрос в функцию передай, и в useEffect-e вызывай
А если длина массива не известна заранее? Я просто убрал [] теперь отрабатывает вроди как правильно
Так не правильно
У тебя сейчас каждый раз при ре-рендере сомпонента запрос будет срабатывать
так Вам длина неизвестна, но компьютер ее посчитает и при ее изменении реакт перерендерит компонент
Всмысле количесво записей в базе? Это имеете ввиду?
вы берете данные и их сохраняете. изначально длину массива Вы не знаете, но при получении данных ее можно посчитать
понял, сейчас попробую, Спасибо!
Обсуждают сегодня