я пытаюсь понять vuex, мутации и действия, и я понимаю, что для изменения состояния вам нужно использовать мутацию, но на практике кажется, что, возможно, я делаю что-то не так или плохо понимаю.
Пытаюсь скрыть этот абзац с помощью мутации из магазина. Я использую этот реальный базовый код, чтобы понять концепцию мутации.
<template>
<p v-if = "this.$store.state.true">Hide this using Vuex </p>
<v-btn @click = "true = !true"> Click Me </v-btn>
</template>
В моем магазине. JS-файл
state : {
true: false
}
mutations: {
How would i go about creating a mutation????
}
заранее спасибо
Попробуй это
mutations: {
TOGGLE_TRUE (state) {
state.true = !state.true
}
}
<v-btn @click = "$store.commit('TOGGLE_TRUE')"> Click Me </v-btn>
Обычно я пишу мутации с использованием змеиного регистра в верхнем регистре, но вы можете изменить его на нижний регистр. Это чувствительно к регистру.
Чтобы вызвать мутацию, используйте commit
и имя мутации в качестве параметра.
Вы также можете передать дополнительную переменную для фиксации второго параметра, например:
$store.commit('TOGGLE_TRUE', true)
TOGGLE_TRUE (state, bool) {
state.true = bool
}
и если вы хотите передать больше данных, используйте встряхивание объектов и дерева ES6.
person = {name: 'johndoe', age: 30}
$store.commit('SET_PERSON', person)
SET_PERSON (state, {name, age}) {
state.name = name
state.age = age
}
p.s. Вы должны найти более понятное имя состояния, а не просто «true», подойдет что-то вроде «showParagraph».
@SirDad, когда я впервые изучил vuex, я также искал соглашение об именах и наткнулся на такой вопрос, как forum.vuejs.org/t/…, а также на некоторые другие вопросы. А при использовании модулей с пространством имен vuex на первый взгляд проще смотреть, потому что имя функции написано прописными буквами, а имя модуля — camelCase.
Спасибо за помощь. И да, я изменил переменную состояния, лол
почему вы используете заглавные буквы, когда называете свои мутации... есть ли за этим логическая причина или просто для того, чтобы избежать перезаписи/чувствительности к регистру и что-то в этом роде?