Не совсем понимаю как правильно работать с апи
запросы умеешь делать в бэк ?
Вроде как получается делать, но не знаю, правильно ли я это делаю)
Сейчас
https://pastebin.com/8jM4TxHJ вотс
вот и переносишь эти методы работы с пользователем во Vuex
https://vuex.vuejs.org/ru/#%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%C2%AB%D0%BF%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC%C2%BB
Почто человека плохому учите
Я кстати тоже не вижу прикола запросы в vuex пихать, но да ладно).
так а что ему в каждом компоненте писать запрос для получения данных пользователя ?
Нет конечно. Лично я создаю отдельную папку "classes\Api" и туда добавляю классы с методами которые и описывают весь api. Получается весь api в отдельном месте и проще работать так.
У нас на проектах есть ряд запросов которые повторяются на кучах компанент и страниц, мы их вызываем в начале запихиваем в стейт и тянем гетерами. Не знаю хорошо ли это или плохо, но это работает и достаточно удобно.
И это хорошо. Каждый пишет как сам считает лучше и делиться опытом. Но согласитесь, удобно когда api отдельно, а хранилище отдельно.
Нинада, потом это будет слабо поддерживаемо, лучше запросы делать в том компоненте где нужны данные из этого запроса, а стор стараться не трогать как можно дольше
я других проектов не видел)))) Работал на React пришел в новую орг. сказали ''Нужен vue, у нас vue'' у них здесь все + - так и написано. Мне вот интересно есть ли большие открытые проекты на гите что бы глянуть как люди нормально пишут?
Раньше тоже думал что это удобно и хорошо, пока не настала пора рефакторить, тогда я проклял такой подход :)
Как пример. Гуглишь: "Vue awesome" (сборник пакетов для всего на Vue) и изучаешь популярные пакеты. Только смотреть надо несколько чтобы увидеть как пишут код разные люди.
Понял, что в новом приложении все хорошо, когда открыл после горы работ vuex, а там пусто.
так если данные нужно в нескольких компонентах или во всех ? в чем принципиальная разница в том что вы храните все методы для работы в отдельной папке от того чтобы хранить их так же в Vuex ? создаешь хранилише Vuex для user, в нем только работа с юзером, подключаешь где надо.. так же для других данных если нужно
Во всех данные почти никогда не нужны, писать сами забросы к апи в экшенах уж точно дорога в ад, нужен хотя бы api layer. Vuex это очень дорого в плане производительности ибо это второй вью
можете посоветовать статью на эту тему почитать ?
нет, но вчера я тут писал причины и решения
> писать сами забросы к апи в экшенах уж точно дорога в ад, why ??
хранилище нужно для того чтобы шерить стейт на все приложение, а не делать запросы к API
то есть выполнять запрос в компоненте и оправлять полученные данные в мутацию ? и хранить методы api в отдельной папке ?
грубо говоря да. Завтра в приложении решат отказаться от vuex, а у вас весь фетч данных в нем. Или бизнес-логика вокруг фетча изменится и вьюкс внезапно превратится еще и в хранилище бизнес-логики
что значит решат отказаться ? в пользу чего ? и главное зачем ?
в пользу других решений для реализации хранилища, самый распространенный пример переезд на apollo-graphql, у которого свое хранилище
изменится запрос, изменится логика...
нет, просто вместо вызова fetch/axios.get в экшне должен быть вызов getUser()
а getUser в папке для API логика не меняется, просто создается API Layer Vuex никуда не девается
Нет, вызов getUser должен быть в той части vue приложения, в которой он нужен. в vuex нужен только результат этого реквеста
скажите, для чего тогда существуют actions в Vuex ?
для выполнения асинхронных операций
запросы и есть асинхронные операции
это только запутывает логику, если хочешь хранить состояние по вьюксе, работа с ним должна быть очевидной
мы с вами не о событийном цикле спорим а об архитектуре
работа с ним более чем очевидна, есть состояние, мутации и экшены
приходит новый разраб, заходит во Vuex и не находит откуда хранилище получает данные, только мутацию setUser....
приходит как то новый разраб, заходит в компонент Button и не видит откуда текст в кнопке появился, есть только <slot />
так тут button зависит от родителя а с Vuex данные шарятся между компонентами
слоты это общепринятый способ работать с компонентами держать часть логики запросов в компоненте, другую часть во вьюксе - нет
А вызов мутации зависит от контекста, разработчики даже на днях выкатили фичу по маппингу мутаций и экшенов в компоненты
маппинг уже давно есть
Я не утверждал, что нужно часть логики хранить во вьюксе, а часть в компонентах. Я утверждал, что выполнять реквесты из хранилища это катастрофа
Это была шутка
почему катастрофа ?
да мы поняли, сидим ждём аргументы
Обсуждают сегодня