Передача переменных между функциями на одном экране - PullRequest
0 голосов
/ 23 февраля 2019

Здесь вы можете увидеть переменную с именем ChatID.

getChatId() {
const IDloc = firebase.database().ref('/rooms');
const newChat = IDloc.push({
  title: 'New chat over again'
});
const ChatID = newChat.key;
try {
  AsyncStorage.getItem('email').then((email) => {
    const membersList = firebase.database().ref('/members').child(ChatID);
    const user1 = email
    console.log('user1: ', user1);
    const user = firebase.auth().currentUser;
    membersList.set({
      user1: user1,
      user2: user.email
    });
  }).done();
} catch (error) {
  console.log('Error has accurated');
}
}

get ref() {
return firebase.database().ref('/messages').child(this.getChatId.ChatID);
}

Что мне нужно сделать, это передать эту переменную из getChatId () в ref () и вставить этот ChatID внутри дочернего элемента.

Когда я делаю это так, как я делал в своем коде, я получаю неопределенное значение вместо ChatID.Когда я пытаюсь сделать это с помощью state = {}, я получаю нулевое значение.

Как я могу это исправить?

1 Ответ

0 голосов
/ 23 февраля 2019

Если вы используете класс, вы можете сделать следующее

ChatID = '' //declare the variable outside

getChatId() {
const IDloc = firebase.database().ref('/rooms');
const newChat = IDloc.push({
  title: 'New chat over again'
});
this.ChatID = newChat.key; //set the variable
try {
  AsyncStorage.getItem('email').then((email) => {
    const membersList = firebase.database().ref('/members').child(ChatID);
    const user1 = email
    console.log('user1: ', user1);
    const user = firebase.auth().currentUser;
    membersList.set({
      user1: user1,
      user2: user.email
    });
  }).done();
} catch (error) {
  console.log('Error has accurated');
}
}

get ref() {
return firebase.database().ref('/messages').child(this.ChatID);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...