Size: a a a

Vue.js Russian Developers Community

2020 December 26

VD

Vitaliy Demchuk in Vue.js Russian Developers Community
KONSTANTIN KONSTANTIN
Переслано от Kirill Galimov
Всем привет, подскажите пожалуйста.
Есть вот такие "карточки" для статей. Суть в том, что это как бы одна сущность, но в разных стилистиках.
Все эти карточки состоят из самой маленькой части (третья снизу), образуя из одной формы другие.
Скажите, как мне правильно построить компонент для всех этих видов одной карточки? Писать под каждую карточку разные компоненты? Делать один компонент и передавать пропсы в виде ширина+высота, а внутри возвращать через v-if в зависимости от значения? Уже голову сломал, как правильно это сделать
Один компонент с пропсом. И лучше не через v-if, а применяя разные классы к блокам
источник

TP

Tgl Pl in Vue.js Russian Developers Community
Добрый день. Подскажите, пожалуйста, каким образом подключать router, vuex, vue, чтобы при сборке использовалась их .min версия. А то через плагин выдает, что у нас подключается esm
источник

VD

Vitaliy Demchuk in Vue.js Russian Developers Community
kentforth
приведу пример: на первой странице сайта есть список товаров. При клике на товар, он сохраняется во vuex и после перехода на другую странице, данные о товаре берутся из стора, а вот что делать если на другую странице был сделан переход не с первой страницы, а из адресной строки? вот поэтому мне нужно в computed свойствах вызвать api для подтягивания данных о товаре из api
Думаю что тут стоит применять другой подход. Сохранять данные не в стор, а в переменную data самого компонента. И соответственно грузить данные через апи.
источник

k

kentforth in Vue.js Russian Developers Community
Vitaliy Demchuk
Думаю что тут стоит применять другой подход. Сохранять данные не в стор, а в переменную data самого компонента. И соответственно грузить данные через апи.
в смысле передавать данные из одного компонента в другой через emit?
источник

VD

Vitaliy Demchuk in Vue.js Russian Developers Community
Я так понимаю у вас есть страница, вы загружаете список товаров, потом отображаете их через цикл. В цикле вызываете компонент товара, в который передаёте информацию о нем через пропс
источник

VD

Vitaliy Demchuk in Vue.js Russian Developers Community
Не вижу смысла все постоянно кэшировать в vuex.. или я что то не понимаю)
источник

GS

Grigorii K. Shartsev in Vue.js Russian Developers Community
Tgl Pl
Добрый день. Подскажите, пожалуйста, каким образом подключать router, vuex, vue, чтобы при сборке использовалась их .min версия. А то через плагин выдает, что у нас подключается esm
Не используешь vue/cli?
источник

TP

Tgl Pl in Vue.js Russian Developers Community
испольузю
источник

TP

Tgl Pl in Vue.js Russian Developers Community
Но при билде все равно используются файлы все равно эти файлы. С чем вообще это связано, а то я даже не знаю, что загуглитьб
источник

k

kentforth in Vue.js Russian Developers Community
Vitaliy Demchuk
Я так понимаю у вас есть страница, вы загружаете список товаров, потом отображаете их через цикл. В цикле вызываете компонент товара, в который передаёте информацию о нем через пропс
нет, у меня нет пропсов вообще, я использую slots, для карточки товара. На главной странице отодбражается список всех товаров из api через цикл. Карточки завернуты в router link, При клике на линк(карточку) идет переход на страницу с описание карточки товара и  данные кликнутой карточки сохраняются как обьект во vuex.  На странице с описанием товара нужно отобразить данные карточки, и если во vuex нет этих данных => сделать api запрос ,  => полученные данные отобразить в описании карточки
источник

k

kentforth in Vue.js Russian Developers Community
Vitaliy Demchuk
Я так понимаю у вас есть страница, вы загружаете список товаров, потом отображаете их через цикл. В цикле вызываете компонент товара, в который передаёте информацию о нем через пропс
я подумал,что получение описания карточки из vuex будет намного производительней, нежели джелать каждый раз запрос из api
источник

VD

Vitaliy Demchuk in Vue.js Russian Developers Community
kentforth
нет, у меня нет пропсов вообще, я использую slots, для карточки товара. На главной странице отодбражается список всех товаров из api через цикл. Карточки завернуты в router link, При клике на линк(карточку) идет переход на страницу с описание карточки товара и  данные кликнутой карточки сохраняются как обьект во vuex.  На странице с описанием товара нужно отобразить данные карточки, и если во vuex нет этих данных => сделать api запрос ,  => полученные данные отобразить в описании карточки
У вас же не вся информация приходит с апи на главной? Почему бы на главной не сделать запрос к апи без детальной информации о товарах, а непосредственно, когда переходим на карточку товара, сделать другой запрос с полной информацией о ней. Например, как минимум, на главной картинки товаров скорее всего должны быть не большого разрешения, а на карточке - большого. Если все таки использовать подход с vuex, то проверяйте наличие товара в нем и если нет, загружаете через действие. Computed потом все сам пересчитает и отрендерит.
источник

k

kentforth in Vue.js Russian Developers Community
Vitaliy Demchuk
У вас же не вся информация приходит с апи на главной? Почему бы на главной не сделать запрос к апи без детальной информации о товарах, а непосредственно, когда переходим на карточку товара, сделать другой запрос с полной информацией о ней. Например, как минимум, на главной картинки товаров скорее всего должны быть не большого разрешения, а на карточке - большого. Если все таки использовать подход с vuex, то проверяйте наличие товара в нем и если нет, загружаете через действие. Computed потом все сам пересчитает и отрендерит.
дело не в главной) там все нормально. Я могу конечно делать каждрый раз запрос в api, без проблем, но хочется через vuex все таки)
источник

VD

Vitaliy Demchuk in Vue.js Russian Developers Community
Тогда action vuex наше все
источник

k

kentforth in Vue.js Russian Developers Community
Vitaliy Demchuk
Тогда action vuex наше все
хорошо, спасибо!
источник

VD

Vitaliy Demchuk in Vue.js Russian Developers Community
Имеется в виду сделать action который по id будет подгружать товар в store, вообщем очевидные вещи, думаю вы все поняли, повторяюсь на всякий случай)
источник

e

elromio in Vue.js Russian Developers Community
kentforth
приведу пример: на первой странице сайта есть список товаров. При клике на товар, он сохраняется во vuex и после перехода на другую странице, данные о товаре берутся из стора, а вот что делать если на другую странице был сделан переход не с первой страницы, а из адресной строки? вот поэтому мне нужно в computed свойствах вызвать api для подтягивания данных о товаре из api
Всегда стоит вытягивать инфу о товаре с помощью апи при переходе на его страницу. А то что у вас на главной есть список товаров должно вытягиваться отдельным апи запросом на сервер, который выдаст список товаров с краткой инфой по каждому из них и id, по которому вы будете вытягивать полную инфу о товаре при переходе на его страницу.

Тут нет необходимости складывать в стор всю вашу БД которая хранится на бэкенде чтобы ее потом показывать на других страницах. Данные о товаре в БД могут измениться и ваш стор об этом ничего не узнает
источник

k

kentforth in Vue.js Russian Developers Community
elromio
Всегда стоит вытягивать инфу о товаре с помощью апи при переходе на его страницу. А то что у вас на главной есть список товаров должно вытягиваться отдельным апи запросом на сервер, который выдаст список товаров с краткой инфой по каждому из них и id, по которому вы будете вытягивать полную инфу о товаре при переходе на его страницу.

Тут нет необходимости складывать в стор всю вашу БД которая хранится на бэкенде чтобы ее потом показывать на других страницах. Данные о товаре в БД могут измениться и ваш стор об этом ничего не узнает
да, это конечно правильный подход, но я исхожу из того,что мне предоставили, а предоставили мне один апи со списком всех товаров(вся характеристика каждого товара в этом же апи) и могу получить ещё апи для каждого товара отдельно,в данном случае мне проще сохранить один апи со списком всех товаров, и уже при клике на каждый товар сортировать массив во vuex и доставвать оттуда товар, а не делать каждый раз новый запрос на сервер
источник

k

kentforth in Vue.js Russian Developers Community
elromio
Всегда стоит вытягивать инфу о товаре с помощью апи при переходе на его страницу. А то что у вас на главной есть список товаров должно вытягиваться отдельным апи запросом на сервер, который выдаст список товаров с краткой инфой по каждому из них и id, по которому вы будете вытягивать полную инфу о товаре при переходе на его страницу.

Тут нет необходимости складывать в стор всю вашу БД которая хранится на бэкенде чтобы ее потом показывать на других страницах. Данные о товаре в БД могут измениться и ваш стор об этом ничего не узнает
в created() хуке на главной старнице у меня есть запрос на сервер для получения всех товаров, то есть при каждом заходе на главную страницу, список товаров во vuex перезаписывается
источник

e

elromio in Vue.js Russian Developers Community
Как я написал выше ваш стор придется обновлять актуальной инфой из БД.
источник