У меня есть магазин Vue со следующим
store.js
import Vue from 'vue'
import Vuex from 'vuex'
const state = {
supplementStore: {}
}
const actions = {
getDataFromApi ({dispatch, commit}) {
APIrunning.then(response => {
commit('SET_SUPPLEMENT', response)
})
}
}
const mutations = {
SET_SUPPLEMENT (state, data) {
state.supplementStore= data
}
}
const foodstore = {
namespaced: true,
state,
actions,
mutations
}
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
foodstore
}
})
Мой компонент vue выглядит так
Supp.vue
<template>
<input type="checkbox" v-model="supps.logged">
</template>
<script>
import {mapState, mapActions} from 'vuex'
import store from './store'
export default {
data () {
return {
supps: []
}
},
mounted () {
this.supps = this.supplementStore
},
computed: {
...mapState('foodstore', ['supplementStore'])
}
}
</script>
Как видите, у меня есть состояние уровня компонента, называемое supps
, которому присваивается значение supplementStore
(которое является состоянием vuex), как только оно становится mounted
.
mounted () {
this.supps = this.supplementStore
},
supplementStore
получает свое значение от API, и это объект JSON, который выглядит следующим образом
supplementStore = {
logged: true
}
Поэтому, когда мой Supp.vue
компонент смонтирован, мое локальное состояние supps
станет
supps = {
logged: true
}
supps
привязывается к полю ввода типа checkbox (Supp.vue)
с использованием директивы v-model
.
Чего я хочу достичь:
Когда я переключаю флажок, supps.logged
должен переключаться между true
и false
, но supplementStore.logged
должен оставаться неизменным (так как я не связал его с моим полем ввода).
Что я наблюдаю в моем Vue Devtools
:
Когда я переключаю флажок, оба supps.logged
И supplementStore.logged
переключаются синхронно, т. Е. Оба они синхронизируются между истиной и ложью, тогда как я хочу, чтобы только supps.logged
переключался.
Кто-нибудь может мне помочь?