首页 > 解决方案 > 在同一屏幕上的函数之间传递变量

问题描述

在这里您可以看到名为 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={} 执行此操作时,我只会得到 null。

我该如何解决?

标签: firebasereact-nativefirebase-realtime-database

解决方案


如果您正在使用课程,您可以执行以下操作

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);
}

推荐阅读