Varyen
Это не прокатит
мне не очень понятно зачем они так сделали, слишком избыточно всё
Varyen
более "энтерпрайзно" конечно, да
Stanislav
мне не очень понятно зачем они так сделали, слишком избыточно всё
Нет, просто это способ отслеживать изменения
Varyen
я понимаю что логика может быть сложнее, и тогда да, мутации и геттеры - то что нужно
Varyen
а, ну стоп, окей. Исправлюсь. Vue.set(this.$state.data, 'test', 123)
Denis
Не понятно для чего гетеры и сетеры?
Varyen
понятно, но непонятно почему они "навязываются"
Varyen
вот допустим, Vuex мог бы иметь вспомогательный объкт внутри себя, допустим this.$store.simpleState
Denis
Чтобы логику держать в одном месте
Varyen
который будет один в один отражать данные и позволять их брать и забирать
Varyen
без написания геттеров и мутаций
Varyen
т.е. он сам бы их создавал сразу нужные
Varyen
просто допустим мне не нужно изменения отслеживать вовсе ) я просто хочу иметь готовый и распространенный способ расшарить общие данные на все приложение и все компоненты
Denis
Что мешает создать тогда простой файл в котором будет экспорт твоих данных
Varyen
я хочу чтобы они были реактивные при этом, чтобы мои компоненты понимали когда они изменились и отражали это
Varyen
а так вроде это вполне возможно
Denis
А выше пишешь, что изменения не нужны
Denis
Что то тут не так 🤔
Varyen
ну да, я затупил немного, сейчас на примере попробую
Varyen
вот допустим, простейший случай, я инициализирую Vuex.Store, у меня в стейте test: 'string'
Varyen
и я хочу зачем-то во всех своих компонентах иметь возможность ее в любой момент читать и менять
Varyen
сейчас мне для этого надо 1. Написать мутацию setTest(state, value), где я присваиваю ей новое значение 2. Написать геттер getTest, где я просто ее возвращаю 3. Во всех компонентах импортнуть и замапить это всё А, возможно, можно было бы просто внутри computed() использовать this.$simpleState.test чтобы получить значение (вызывается геттер, который сгенерировался автоматически, реактивность сохраняется). Если я где-то меняю this.$simpleState.test = 'newvalue' - вызывается автомтаически сгенерированный сеттер, реактивность сохраняется
Varyen
Vuex же при инициализации знает что передано в стейт, вполне может сгенерировать такие простейшие геттеры и мутации
Varyen
а если нужна логика посложнее - ну окей, пиши свои мутации, свои геттеры
Varyen
внутри то это будет таким же образом работать
Varyen
https://github.com/vuejs/vuex/issues/1037 что-то подобное в этом тикете обсуждают
Varyen
но это можно еще проще сделать
Varyen
https://github.com/Binaryify/vue-tetris/blob/master/src/vuex/mutations.js полный ппц же как это сейчас нужно делать )
Denis
Ты и сейчас можешь использовать this.$store.state.test для отображения и так же this.$store.state.test = 'newvalue'
SpiritMoon
Может кто в курсе такой проблемы\
SpiritMoon
http://joxi.ru/gmvn6ooTxaY1jm
SpiritMoon
Все настойки стандартные во vue cli
SpiritMoon
Гугление не помогло найти проблему
Varyen
2 пункт не нужен
а как, this.$store.state.test как было описано выше?
Stanislav
Зачем писать в vuex геттер, если просто значение возвращаешь
Varyen
ну окей, пусть так, но все равно избыточно
Varyen
Ты и сейчас можешь использовать this.$store.state.test для отображения и так же this.$store.state.test = 'newvalue'
в общем, если вот в такой форме это будет работать, мне просто непонятно почему в документации сразу же не говорят "если у вас очень простой случай, делайте так"
Denis
чтобы потом было легче редактировать структуру
Varyen
с мутациями, геттерами будет более буллетпруфно, с этим соглашусь
Varyen
но если я сразу понимаю, что мне это не понадобится.... ладно
Varyen
попробую и так и так, на практике видно будет )
Denis
ну тебя никто не заставляет так делать)
Varyen
это понятно
Varyen
я считай чисто "поныть" почему навязывается сразу все это
Varyen
если реально можно через this.$store.state получить то же самое в большинстве случаев, без написания мутаций и геттеров
Varyen
https://github.com/cklmercer/vue-stash по-моему я вот это описывал
Varyen
похоже довольно
Stanislav
@agontarev Помнится, ты там контейнеры писал, чтоб vuex стору пробрасывать через пропсы? Смотри, egoist какую фиговину написал :В
Stanislav
https://github.com/egoist/zerotwo
SpiritMoon
Что, совсем никто не встречал проблем с UglifyJs из коробки что ставит vue cli ? 😂
Varyen
только с closure compiler, он при максимальном сжатии может что-то поломать, аглифай вроде безопасен
SpiritMoon
Что-то падает с ошибкой, нашел, что проблема в том, что он не разспознает es6, завез в .bebelrc preset es2015, но так и не смог завести uglify
Danila
Не знаю, что там с ЧИСТОЙ РАСОЙ, в смысле, с чистым кодом, но мне пришлось сегодня на реакте делать большую форму и чё-то я не понял, почему "азаза, мой ХТМЛ - это просто ЖС" - это что-то хорошее.
Danila
Вуе в тыщу раз уютнее
Роман
и this.$state.data.test = '123';
скорее всего будет работать, но так не стоит делать, потому что изменения не будут отслеживаться, и тогда непонятно нафига вообще использовать вуекс, можно вместо него использовать обычный вуе компонент как контейнер с данными. О чём кстати сказано в документации, тот самый простой случай, о котором ты говорил.
Varyen
ну типа того, я посмотрел тикеты - так понял, что "мы понимаем, такой хелпер очень просто написать, но не будем"
Varyen
я поскольку первый раз пишу с vue (и вообще первый раз пишу SPA, опыт при этом приличный) сразу удивился, зачем тут так все усложнять. Может напишу для себя такой хелпер, а потом постепенно где нужно перейду на vuex
Varyen
да, вуе-компонент с данными мне тут скорее больше подходит, попробую сделать как плагин, чтобы не нужно было его везде импортить
Varyen
но чтобы при этом он использовал vuex
Varyen
думал готовое что-то есть, но не могу найти
Varyen
Вообще, еще есть $root 😄
ну это слишком :)
Varyen
прокси к нему, чтобы не так постыдно выглядело
Varyen
вот это вариант
Varyen
И назвать это Vuex
не, у меня хитрее идея. Я хочу для себя упростить vuex, и когда нужно будет использовать его рекомендуемый подход. Поскольку сегодня пятница, я думаю мне можно простить такую гениальную идею.
wkornilow
Do not mutate vuex store state outside mutation handlers.
wkornilow
state: { markers: [] }, mutations: { addMarkers(state, marker) { Vue.set(state, 'markers', marker) } }, _______________ this.$store.commit('addMarkers', this.markers); this.markers - локальный стейт
wkornilow
Что я делаю не так?
wkornilow
рекомендоавали
Nikita
кто?
wkornilow
выше в чате
Nikita
а, ты типо маркеры полностью перезаписываешь?