我目前正在尝试将应用程序的初始状态设置为从Firebase中提取的值。但是,我无法弄清楚如何正确处理Javascript的异步性质 - 目前当我在render
函数中获取应用程序的状态时,itemsList
未定义。对于我做错的任何建议都将不胜感激。
getInitialState: function() {
var dataSource = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1.guid != r2.guid,
sectionHeaderHasChanged: (s1, s2) => s1 !== s2
});
return {
dataSource: dataSource,
itemsList: this.getItemsList()
};
},
getItemsList: function() {
var userRef = usersRef.child("5019e705-0-29f09e520b7e");
var itemsListRef = userRef.child("items_list");
var itemsList;
itemsListRef.on('value', (snap) => {
itemsList = snap.val();
return itemsList;
});
},
答案 0 :(得分:1)
您需要使用其中一种React生命周期方法来处理异步调用:
查看文档HERE
componentDidMount: function() {
this.serverRequest = $.get(this.props.source, function (result) {
var lastGist = result[0];
this.setState({
username: lastGist.owner.login,
lastGistUrl: lastGist.html_url
});
}.bind(this));
},