@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.
У меня вопрос: это просто так принято, менять и обращаться не напрямую или это действительно может не сработать при каких нибудь обстоятельствах?
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
muzikant777
@muzikant777
PHP/Vue разработчик
Меняем состояние без мутаций:
Плюсы:
  • не нужно описывать мутации
Минусы:
  • нельзя использовать вкладку Vuex vue-devtools
  • плагины vuex не узнают об изменении состояния
  • практически неконтролируемое изменение состояния приложения, БОЛЬШИЕ проблемы с отладкой и поддержкой


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

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

Войти через центр авторизации
Похожие вопросы