在点击我的反应原生应用的按钮,我调用两个功能:getSolutionListFromDatabase
,设定组件的状态以包括此溶液列表,然后updateDatabaseSolutionList
,其中将元素添加到该列表,并再将它推回至火力地堡。但是,虽然应用程序的状态在第一个函数中正确更新,但在第二个函数中,状态被记录为未定义,并且在第一个函数中的某些语句之前正在调用该函数的日志语句。由于某些原因,函数是否异步运行,并且这是React native的一个特性?如果是这样,我怎样才能防止第二个功能执行,直到状态被设置?谢谢。React-native防止函数异步执行?
onSubmitPressed: function() {
if (this.checkSolution) {
this.getSolutionListFromDatabase();
this.updateDatabaseSolutionList();
Alert.alert(
'Correct!',
"Woohoo!"
);
}
},
getSolutionListFromDatabase: function() {
var thisItemRef = itemsListRef.child(this.state.itemID);
thisItemRef.once('value', (snap) => {
var solutionList = snap.val();
this.setState({
solutionList: solutionList
});
console.log('solution is set as' + this.state.solutionList);
});
},
updateDatabaseSolutionList: function() {
var newSolutionList = [];
console.log('solutionList undefined here' + this.state.solutionList);
if (this.state.solutionList) {
newSolutionList = this.state.solutionList;
newSolutionList.push(this.props.itemID);
}
//then push new list to Firebase
},
感谢您的提示。当我尝试通过返回snap.val()直接将solutionList传递给下一个函数时,即使它在函数内记录snap.val的正确值,该函数也会返回为未定义的。任何想法可能发生在这里? – user3802348