Comments 7
АХАХАХАХ. Но да. Я просто смирился и делаю обработку и сохранения состояния в vuex. Лучше к сожалению не сделать. Что еще больше меня удручает, в документации про общую архитектуру и что делать при проблемах роста молчок. Нет лучших практик от слова совсем.
Вообщем не должно возникать проблем при использовании vuex только в качестве хранилища. Но проблемы начинаются, если пытаешься делать что-либо помимо хранения данных.
Хотя у меня и с хранением иногда возникают проблемы, приходится решать хуками vuex, что называть кроме как костылем не повернётся язык (проблема была связана с тем, что vuex не обновлял computed реактивно)
Неее. Я про концепцию саму. Там в первичной концепции дыра.
- commit — фактически тут и работаем с данными. Данные пришли делаем трансформацию и прочее.
- dispatch — асинхронный и тут у нас врывается работа с получением данных и передачей параметров
Оно первоначально так сделано что так и больше никак. Причем в большем числе случаев проще получается всю обработку положить в dispatch, а в commit делать тупо сейв в хранилище.
Хотя по идее в dispatch мы должны брать входящие данные перекладывать их http далее обрабатывать тут ошибки возникшие и положить raw данные в commit, а там уже обработать.
А если идти еще дальше, то вызовы в http из dispatch надо выносить в отдельный слой который прячет реализацию вызовов.
Но все это дружно порождает такое лютое количество boilerplate кода, что народ срезает углы. Я в том числе. В итоге основной код лежит в dispatch. А commit используется только как прокладка между store и dispatch. Потому что убрать никак. Те же getters тоже используются только в случае если одинаковых вызовов больше двух. Проблема все та же boilerplate.
Я с MobX не работал. Как там обстоят дела с модулями? Если там есть модули:
1. Можно ли их подгружать в момент работы?
2. Как происходит работа с модулями (получение состояния, изменение состояния)
Vuex нарушает инкапсуляцию