Пересел с react/redux на vue/vuex и возникли проблемы с vuex.
Почему то при dispatch или cmmit из action туда не приходит не один из методов а приходят только передаваемые данные.
Также при dispatch экшена из компонента мы принимаем данные, но данные судя по всему никуда из action не уходят, т.к принимаемые данные в mutation пусты.
store
import Vue from 'vue'
import Vuex from 'vuex'
import * as actions from './actions'
import * as getters from './getters'
import * as mutations from './mutations'
Vue.use(Vuex)
const initialState = {
settings: JSON.parse(localStorage.getItem('widgetSettings')) || []
};
const inBrowser = typeof window !== 'undefined'
// if in browser, use pre-fetched state injected by SSR
const state = (inBrowser && window.__INITIAL_STATE__) || initialState
export const store = new Vuex.Store({
state,
actions,
mutations,
getters
})
actions
import {SAVE_WIDGET_SETTINGS} from '../constants'
export const saveSettings = ( data) => {
console.log(data)
return {SAVE_WIDGET_SETTINGS, data}
};
mutations
import {SAVE_WIDGET_SETTINGS} from '../constants/index'
export const mutations = {
SAVE_WIDGET_SETTINGS (state, data) { state.settings.push(data)}
}
component
<div class="widgetsblock_selectors_grid_col">
<div class="widgetsblock_selectors_selector">
<button class="btn btn-secondary btn-sm" v-on:click="submit" type="button">Сохранить</button>
</div>
</div>
<script>
import { mapActions } from 'vuex'
import { mapState } from 'vuex'
import { saveSettings } from '../../vuex/actions'
export default {
name: 'WidgetsOptions',
data () {
return {
checkedNames: []
}
},
mounted: function () {
this.loadSettings()
},
methods: {
submit: function() {
localStorage.setItem('widgetSettings', JSON.stringify(this.checkedNames));
mapActions([(saveSettings(this.checkedNames))]);
}
}
}
</script>