Javascript 反应+;使用单击事件未定义Firebase
希望这是一个快速修复。基本上,我已经在子组件的几个元素上设置了onClick侦听器,当它们被单击时,它会从主组件运行一个函数。一切都很好,直到我们在调用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
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]
有关属性访问器的更多信息,请参见先生,您是英雄。谢谢你的简单解决方案。没问题!乐意帮忙:)