Я борюсь с асинхронными вызовами и понял, что на этот вопрос уже много раз отвечали, но я пробовал многие из предложенных подходов и не увенчался успехом, поэтому я был бы очень признателен, если бы кто-то мог мне помочь.Я также хотел бы отметить, что в последнее время я добился большого прогресса, но я считаю себя новичком.
У меня есть асинхронный вызов базы данных (в файле controller.js), которая должна вернуть все игры изтаблицу «Игры» и сохраните ее в переменной «allGames» типа Array:
async getAllGames ({ request, response }) {
const allGames = await Game.all()
return response.json({
status: 'success',
data: allGames
})
}
Когда страница загружена, выполняется функция fetchAllGames:
created () {
this.fetchAllGames(this.myCallback)
},
methods: {
myCallback (response) {
this.allGames = response
},
fetchAllGames (callback) {
axios
.get('/fetch_games')
.then(response => {
callback(response.data.data)
})
}
}
Все кажетсяхорошо, и здесь я должен отметить, что я использую VueJS.
Когда я пытаюсь напечатать 'allGames', используя
{{allGames}}
он работает, как и ожидалось, показывая массив всех игр из базы данных.
Если я попытаюсь
{{allGames [1]}}
Я получаю вторую игру, также как и ожидалось.
Если я попытаюсь
{{allGames [1] .id}}
Я получуидентификатор второй игры с горячей перезагрузкой.Теперь, если я вручную перезагружаю страницу, хотя идентификатор все еще отображается на странице, я получаю
[Vue warn]: Ошибка при рендеринге: «TypeError: _vm.allGames [1] не определено«
в консоли.
Моя проблема с этим заключается в том, что мне нужно передать« allGames »другому Компоненту, и сейчас я передаю« undefined ».
Я действительно ценю, если кто-нибудь из вас, ребята, сможет пролить мне свет.Я боролся уже некоторое время и пробовал много разных подходов.У меня есть тот же код в другом компоненте, и, кажется, работает нормально.Я уверен, что что-то упустил.