169 похожих чатов

Всем привет. Помогите с алгоритмом. В main.js в created вызывается vuex

action в котором получаются данные и пишутся в state (async/await).
На странице я делаю фильтрацию данных которые получаю через getter.
Когда я загружаю страницу она пытается отфильтровать данные которых ещё нет в state из-за чего всё падает.
Как дождаться полной отработки получения данных и только тогда работать с ними?

7 ответов

14 просмотров

почему падает-то? если данных нет, то у тебя просто пустой массив, который ничего ломать не должен

Anton Permyakov
почему падает-то? если данных нет, то у тебя прост...

Не суть важно, падает или возвращает пустой массив. Суть вопроса именно в том, как мне сначала загрузить все данные в store, и лишь потом везде с ними работать?

Владимир Бандуристов
Не суть важно, падает или возвращает пустой массив...

грузи их, например, в корневом компоненте там по завершению загрузки - сетишь данные в стор и флаг какой-нибудь проставляешь завершения загрузки но вводных все равно как-то мало )

Владимир Бандуристов
Не суть важно, падает или возвращает пустой массив...

в том же сторе можешь держать условный признак загрузки данных и по нему отрисовывать компоненты

Владимир Бандуристов
Понял, спасибо. Покопаю в эту сторону.

да не за что вроде вообще ж непонятно, что-то нормальное посоветовал или нет)

Mikhail Tadevosyan
да не за что вроде вообще ж непонятно, что-то норм...

Если чуть подробнее. Я пишу мобильно приложение. При загрузке оно получает асинхронно данные из внутреннего хранилища телефона, пишет их в store. В main.js тут вызывается action. async beforeCreate() { await this.$store.dispatch("loadBoxes"); }, Он получается список коробок из внутреннего хранилища телефона, и пишет их в store. async loadBoxes({ commit }) { const { value } = await Storage.get({ key: "boxes" }); if (!value) { await Storage.set({ key: "boxes", value: JSON.stringify([]), }); commit("loadBoxes", []); } else { commit("loadBoxes", JSON.parse(value)); } }, На странице одной коробки, я ищу в этих данных по айдишнику из роутера нужный, и записываю в data что бы отобразить computed: { ...mapState({ allBoxes: (state) => state.boxes, }), } getSingleBoxInfo() { const boxInfo = this.allBoxes.find( (box) => box.id === this.$route.params.id ); this.moneyBox = { ...boxInfo, startDate: this.convertDate(boxInfo.startDate), endDate: this.convertDate(boxInfo.endDate), }; }, И вот тут уже возникает ошибка Cannot read property 'startDate' of undefined" так как boxInfo ещё пустой и соответственно он не может найти в нём startDate.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта