Нажатие продолжает увеличивать значение обновления Firestore каждый раз - PullRequest
0 голосов
/ 27 марта 2020
function rateProject(self) {

document.getElementsByClassName('modal')[5].style.display="block";
var docRef=self.getAttribute("id");
var downloadRef = db.collection("projects").doc(docRef);

    document.getElementById('rateOneStar').addEventListener('click',e=>{
        return downloadRef.update({
            oneStar: firebase.firestore.FieldValue.increment(1)
        })
        .then(function() {
            console.log("1 star given");
            document.getElementsByClassName('modal')[5].style.display="none";
        })
        .catch(function(error) {
            // The document probably doesn't exist.
            console.error("Error updating document: ", error);

        });

    })
}

Вот что происходит с oneStar:

(1 клик: 1), (2 клика: 3), (3 клика: 6)

Что я хочу:

(1 клик: 1), (2 клика: 2), (3 клика: 3).

Если я удаляю eventListener, он работает.

1 Ответ

0 голосов
/ 27 марта 2020

Я считаю, что addEventListener складывается, и каждый раз, когда вы выполняете функцию, добавляется еще один слушатель. Если вы хотите подтвердить, что это происходит, нажав 4 раза, результат должен быть 10. Одно из возможных решений - каждый раз очищать прослушиватель событий от элемента rateOneStar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...