removeEventListener не работает, и он не анонимный

#javascript #firebase #firebase-authentication

#javascript #firebase #firebase-аутентификация

Вопрос:

итак, у меня есть функция, которая отправляет сообщение, и она вызывается после onAuthStateChanged(firebase) Я хочу удалить его и добавлять снова всякий раз, когда пользователь входит в систему, но он не удаляется, и я не получаю никаких ошибок

 auth.onAuthStateChanged(function (user) {if (user) {
// User is signed in.
// creating posts
posts = db.collection("posts");
const { serverTimestamp } = firebase.firestore.FieldValue;
console.log(serverTimestamp)
const submitPost = async (event) => {
  event.preventDefault();

  let LastId = posts.doc("id");
  let id;
  LastId.get().then((doc) => {
    id = doc.data().lastPost;
    id  ;
    id = id.toString();

    const post = {
      uid: user.uid,
      content: a.preview.innerHTML,
      createdAt: serverTimestamp(),
      id: Number(id),
    };
    console.log(post.uid);
    posts.doc(id).set(post).then(closeMD()); // puted this line here instead of outside "then" because i need the id
    LastId.update({ lastPost: Number(id) });
  });
};

submit.addEventListener("click", submitPost);
submit.removeEventListener("click" , submitPost)}
  

Редактировать

Я обнаружил, что onAuthStateChanged это an observer , и я действительно не понимал, как с ним работать, я прочитал документацию и посмотрел видео от firebase, но я все еще не понимал, как с ним работать

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

1. Похоже, вы удаляете слушателя, как только добавляете его ..?

2. да, потому user что изменен, и, как вы видите, я использую его в функции

Ответ №1:

Я до сих пор не знаю, как с этим бороться, но я нашел решение, я просто клонировал старую кнопку и заменил ее на клонированную, вот так :

     const submit = document.getElementById("submitPost");
       const newSubmit = submit.cloneNode(true);
    submit.parentNode.replaceChild(newSubmit , submit)
    newSubmit.addEventListener("click", submitPost);
  

и я все еще хочу понять, как это observal работает