После нажатия кнопки в моем приложении «Нативные приложения» я вызываю две функции: getSolutionListFromDatabase
, которая устанавливает состояние компонента для включения этого списка решений, а затем updateDatabaseSolutionList
, который добавляет элемент в этот список и отталкивает его обратно в Firebase. Однако, хотя состояние приложения должным образом обновляется в первой функции, во второй функции состояние регистрируется как неопределенное, а мои операторы журнала для этой функции вызывается перед некоторыми операторами в первой функции. Являются ли функции, работающие асинхронно по какой-либо причине, и является ли это особенностью 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
},
Спасибо за советы. Когда я пытаюсь передать решениеList непосредственно следующей функции, просто вернув snap.val(), функция возвращается как неопределенная, даже если она регистрирует правильные значения для snap.val внутри функции. Какие-нибудь идеи, что может происходить здесь? – user3802348