@kirill-93

Обязательно ли использовать computed?

Использую Vuex.
В документации сказано следующее:


Нельзя напрямую изменять состояние хранилища. Единственный способ внести изменения — явно вызвать мутацию.



Поскольку хранилище Vuex реактивно, самый простой способ «получения» — просто вернуть часть состояния хранилища в вычисляемом свойстве


Тогда я создал простой компонент
<div>
            <div>
                DATA FROM STORE: {{ $store.state.test }}
            </div>

            <div>
                DATA FROM COMPUTED: {{ storeTest }}
            </div>

            <hr>

            <button @click="changeWithMutation">Randomize test</button>
            <button @click="changeManually">Randomize manually</button>

        </div>


<script>
    export default {
        data() {
            return {

            }
        },
        computed: {
            storeTest() {
                return this.$store.state.test;
            }
        },
        created() {
        },
        methods: {
            changeWithMutation() {
                this.$store.commit('setTest', Math.random());
            },
            changeManually() {
                this.$store.state.test = Math.random();
            }
        }
    }
</script>


И оба утверждения оказались ложными. Я могу менять значения напрямую (метод changeManually) и я могу выводить значения напрямую, а не через computed.
У меня вопрос: это просто так принято, менять и обращаться не напрямую или это действительно может не сработать при каких нибудь обстоятельствах?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 2
yarkov
@yarkov
https://github.com/yarkovaleksei/toster-extension
Изменение напрямую будет работать, но при включенном флаге strict будет ругаться в консоль.
Так же и доступ без оберток вполне себе обычное дело. Имхо юзать компьютеды и геттеры стоит тогда, когда планируется заюзать свойство в директиве v-model или надо вернуть видоизмененный результат (отфильтрованный массив например)
Ответ написан
muzikant777
@muzikant777
PHP/Vue разработчик
Меняем состояние без мутаций:
Плюсы:
  • не нужно описывать мутации
Минусы:
  • нельзя использовать вкладку Vuex vue-devtools
  • плагины vuex не узнают об изменении состояния
  • практически неконтролируемое изменение состояния приложения, БОЛЬШИЕ проблемы с отладкой и поддержкой


А что, если внутренняя реализация vuex изменится в будущих версиях и недокументированный способ перестанет работать?
Моё мнение: плюсы не перевешивают минусы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
20 марта 2019, в 01:07
1000 руб./за проект
20 марта 2019, в 00:27
2000 руб./за проект
19 марта 2019, в 23:14
6000 руб./за проект