Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应+;使用单击事件未定义Firebase_Javascript_Reactjs_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 反应+;使用单击事件未定义Firebase

Javascript 反应+;使用单击事件未定义Firebase,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,希望这是一个快速修复。基本上,我已经在子组件的几个元素上设置了onClick侦听器,当它们被单击时,它会从主组件运行一个函数。一切都很好,直到我们在调用firebase数据库时遇到了一个特定的行,在那里我遇到了未定义的问题。我已经在下面的代码中添加了注释,这样您就可以确切地知道发生了什么 getDataName(event) { var title; var that = this; // Grabs data name attribute from element cl

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

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
       });
    });
  }
这里的想法是将状态设置为文本,该文本作为值存储在firebase db中的“cruise”键下。难倒了

如果我重写下面的一行,并把“cruise”这个词放在那里,它也会起作用……这很奇怪。见下文

 title = snapshot.val().cruise;

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

title = snapshot.val()[grabIdentifier]

有关属性访问器的更多信息,请参见

先生,您是英雄。谢谢你的简单解决方案。没问题!乐意帮忙:)