使用点击事件未定义React + Firebase

时间:2016-09-20 17:10:48

标签: javascript reactjs firebase firebase-realtime-database

希望这是一个快速修复。基本上,我在子组件的几个元素上设置了onClick侦听器,当它们被单击时,它从主组件运行一个函数。一切都很好,直到我们在firebase数据库的调用中遇到一个特定的行,在那里我遇到了undefined问题。我已经在下面的代码中添加了注释,因此您确切地知道发生了什么。

getDataName(event) {
    var title;
    var that = this;
    // Grabs data name attribute from element clicked
    var grabIdentifier = event.target.getAttribute('data-name');
    console.log(grabIdentifier); // prints "cruise"

    // Call to firebase
    var greeting = database.ref('events/travel');
      greeting.once('value').then(function(snapshot) {
      console.log(grabIdentifier); // prints "cruise"

      // Set title to value of the "cruise" key.
      title = snapshot.val().grabIdentifier;
      console.log(title); // prints "undefined" =(

      that.setState({
         greeting : title
       });
    });
  }

这里的想法是将状态设置为文本,该文本存储为" cruise"的键下的值。在firebase db中。难倒!

如果我改写下面的一行,并且实际上说出了“#34; cruise"在那里,它有效...这很奇怪。见下文,

 title = snapshot.val().cruise;

1 个答案:

答案 0 :(得分:2)

您正在尝试访问名为grabIdentifier的属性,您需要使用括号表示法来访问grabIdentifier引用的属性名称

title = snapshot.val()[grabIdentifier]

有关属性访问者的更多信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors