希望这是一个快速修复。基本上,我在子组件的几个元素上设置了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;
答案 0 :(得分:2)
您正在尝试访问名为grabIdentifier
的属性,您需要使用括号表示法来访问grabIdentifier
引用的属性名称
title = snapshot.val()[grabIdentifier]
有关属性访问者的更多信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors