Roman
да какая сейчас разница то, не в коде дело а в архитектуре))
Roman
components -> API adapter -> network -> Server
Denis
А че за адаптер?
Завтра
Когда же тебя забанят омг
Roman
API adapter отвечает за аутентификацию, за кэш и т.д.
Rafael 🌵
))
Завтра
@Fl0pZz конкуренцию тому, что похекалось?)0)
Denis
Удачи хранить миллион товаров и каждый раз тянуть геттеры
Roman
грубо говоря превращает api.getProducts в "Authorization: AccessToken GET /v3/products/"
Завтра
Удачи хранить миллион товаров и каждый раз тянуть геттеры
Он тянет только те данные, которые нужны А в твоей реализации у тебя сразу все полетит
Завтра
Но челику сложно это осознать
Denis
Шта?
Denis
Это с чего ты решил?
Stanislav
Он тянет только те данные, которые нужны А в твоей реализации у тебя сразу все полетит
не полетит, он данные в строре проверяет перед отправкой запроса
Завтра
не полетит, он данные в строре проверяет перед отправкой запроса
Я имею в виду Что в нормальной реализации он потянет с апишки только нужные данные А ден предлагает весь список продуктов сразу тянуть
Denis
Да вот не люблю пух
Denis
Правда
Завтра
Ты гонишь
Иначе ты не получишь самые дорогие товары никак
Завтра
ля забей крч
Завтра
не хочу спорить
Rafael 🌵
Келин, ну ты прям комбайн решил сделать?
Завтра
уже давно понял, что это бесполезно
Завтра
Келин, ну ты прям комбайн решил сделать?
У меня, возможно, оверхед получится, но я все равно хочу
Denis
не хочу спорить
Антох, ты просто не до конца понял что я хочу
Roman
Антох, ты просто не до конца понял что я хочу
ну изначально ты предлагал загрузить весь список товаров в стор и использовать фильтры в компонентах чтоб получить только те или иные продукты. но это не работает, продуктов может быть очень много..
Stanislav
Я имею в виду Что в нормальной реализации он потянет с апишки только нужные данные А ден предлагает весь список продуктов сразу тянуть
Разве? Я вроде не видел, что б он предлагал все данные вытянуть. Он просто предлагает хранить их в сторе и чекать его перед отправкой запроса. Но только вот да, упускает тот момент, что нереально получить разные и актуальные данные за один запрос.
Stanislav
Благо у @Romshark есть черный ящик, который позволяет не парится ему на этот счет :)
Stanislav
сообщением выше ответ
да я так, для себя 😄
Stanislav
@Romshark так а в чем вопрос был?
Roman
Разве? Я вроде не видел, что б он предлагал все данные вытянуть. Он просто предлагает хранить их в сторе и чекать его перед отправкой запроса. Но только вот да, упускает тот момент, что нереально получить разные и актуальные данные за один запрос.
да, это уже последнее предложение, в начале именно фильтры предлагались, но не важно. "Он просто предлагает хранить их в сторе и чекать его перед отправкой запроса." Да но.... зачем хранить данные, которые касаются только одного компонента, в сторе? Он предлагает это делать ради кэширования, мол не грузить дважды, мы ему пытаемся объяснить что за кэш отвечает вообще другая прослойка а именно API адаптер через который компоненты обращаются к API. Именно адаптер хранит кэш и предотвращает лишние запросы на сервер
Roman
т.е. даже если компонент А два раза запросит у API одни и те-же данные, то запрос будет один
Roman
@Romshark так а в чем вопрос был?
вопрос был как в коде реализовать асинх. загрузку данных в computed
Roman
угу
Gaiaz
Думаю в computed надо либо null либо данные отдавать, а грузить в другом месте
Rafael 🌵
вопрос был как в коде реализовать асинх. загрузку данных в computed
ээ, ну как бы он для этого не предназванчен же
Rafael 🌵
это как раз cb из асинхронного потока
Завтра
Есть npm пакет vue-async-computed или как-то так
Завтра
но это имхо моветон
Roman
computed: { products() { return this.$store.state.products; } }, asyncData ({ store, route }) { return store.dispatch('fetchProducts'); } но это как-раз таки со стором, а как это реализовать локально не отходя от компонента))
Roman
а почему именно computed?
а можно иначе? надо это сделать как-то так: var products; export default { asyncData() { api.fetchProducts().then(result => {products = result}) // update component UI somehow, because products changed } }
Завтра
export default { data: () => ({ products: null }), methods: { asyncData ... } }
Stanislav
я не шарю в ssr, а нельзя в data положить загруженнные данные? Или на сервере нет реактивности?
Завтра
ну и если надо сразу вызывать, то в created вызываешь метод
Завтра
а, ssr
Завтра
тогда хз, не знаю особенностей там
Stanislav
да))
ℝei
я не шарю в ssr, а нельзя в data положить загруженнные данные? Или на сервере нет реактивности?
Асинхронно данные надо в асинкдата делать. А потом клади их куда хош
Stanislav
Асинхронно данные надо в асинкдата делать. А потом клади их куда хош
Это я понял. А после того, как я их в дату положу, оно у меня на серваке отрендерится?
ℝei
Ну точнее если в компоненте отобразишь то да
Roman
Асинхронно данные надо в асинкдата делать. А потом клади их куда хош
asyncData должен возвращать Promise насколько я понимаю... но суть в другом: как обновить сам View? как заставить view отобразить полученные данные?
Roman
какой нить Vue.set?
Roman
asyncData() { return new Promise((resolve, reject) => { api.fetchProducts() .then(result => { // remove spinner // update view data resolve(); }) .catch(error => { // request failed // remove spinner // show error reject(); }); }); }
Завтра
remove spinner
Roman
remove spinner
? 😃
Завтра
Завтра
Stanislav
Ну спиннер, я думаю, при ssr не нужен
Anonymous
рекурсия!
Anonymous
😆
Stanislav
Ты в подвале что ли?
Завтра
Ты в подвале что ли?
Нет, я просто всегда дома шторы закрываю
Завтра
Не люблю свет
Anonymous
dark-programmer