Varyen
Это не прокатит
мне не очень понятно зачем они так сделали, слишком избыточно всё
Varyen
более "энтерпрайзно" конечно, да
Stanislav
Varyen
я понимаю что логика может быть сложнее, и тогда да, мутации и геттеры - то что нужно
Varyen
а, ну стоп, окей. Исправлюсь. Vue.set(this.$state.data, 'test', 123)
Denis
Не понятно для чего гетеры и сетеры?
Varyen
понятно, но непонятно почему они "навязываются"
Varyen
вот допустим, Vuex мог бы иметь вспомогательный объкт внутри себя, допустим this.$store.simpleState
Denis
Чтобы логику держать в одном месте
Varyen
который будет один в один отражать данные и позволять их брать и забирать
Varyen
без написания геттеров и мутаций
Stanislav
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
Stanislav
SpiritMoon
Гугление не помогло найти проблему
Stanislav
Stanislav
Зачем писать в vuex геттер, если просто значение возвращаешь
Varyen
ну окей, пусть так, но все равно избыточно
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
думал готовое что-то есть, но не могу найти
Stanislav
Stanislav
Evgeny
Varyen
Varyen
прокси к нему, чтобы не так постыдно выглядело
Varyen
вот это вариант
Stanislav
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
Что я делаю не так?
🐏 Alexander
Nikita
wkornilow
рекомендоавали
Nikita
кто?
wkornilow
выше в чате
Nikita
а, ты типо маркеры полностью перезаписываешь?