Как вызвать функцию из функции? - PullRequest
0 голосов
/ 25 июня 2019

Я действительно не очень хорошо понимаю сферу действия переменных в реагировать на нативные.

Я вызываю функцию из другого компонента, и в этой функции есть вызов функции компонента, но, похоже, она выходит за рамки этой функции:

addKeytoUser = (key, userID) => {
    try {
        this.collection(`${usrPostsDB}`).doc(`${key}`)
            .update(`${likesCol}`, firebase.firestore.FieldValue.increment(1))
        .then((result) => {
            this.collection(`${usrLikesCol}`).doc(`${userID}`).add(`${key}`);
             return result;
        }); 
    } catch ({ message }) {
        console.log(message);
    }       
}

collection - это функция фактического компонента, первый раз, когда он вызывается, возвращает правильное значение, но при вызове во второй раз после последовательного выполнения внутри (result) => response возвращается, что this.collection не существует. Как я могу вызвать функцию компонента из .then () =>

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Вы должны связать свою функцию addKeytoUser, в функции конструктора следующим образом this.addKeytoUser = this.addKeytoUser.bind(this);

0 голосов
/ 25 июня 2019

Вы можете передать функцию collection в функцию addKeyToUser в качестве реквизита. Это будет выглядеть примерно так:

addKeytoUser = (key, userID, collection) => {
    try {
        collection(`${usrPostsDB}`).doc(`${key}`)
          .update(`${likesCol}`, firebase.firestore.FieldValue.increment(1))
          .then((result) => {
            collection(`${usrLikesCol}`).doc(`${userID}`).add(`${key}`);
            return result;
          }); 
    } catch ({ message }) {
        console.log(message);
    }       
}

Это также сделает ваш код немного чище и более читабельным.

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