Skip to content Skip to sidebar Skip to footer

Why The Value From Input Is Not Passed To Vuex

I can't transfer the value from input to the store. When I click on the add item button, I need to create a block with its delete button and the text entered in the input. And then

Solution 1:

First of all, your code doesn't respect the VueX state management standard. This article explains very well how to make proper use of VueX.

Some valid Vuex would like this:

Vue file:

<template><f7-blockstrong><f7-block-title>Some items</f7-block-title><f7-blockv-for="(cat, n) in getCats":key="n"><span>{{ cat }}</span><f7-buttonfillcolor="red" @click="removeCat(n)">Delete Cat</f7-button></f7-block><f7-listform><f7-list-input:value="tempCat"type="text"placeholder="Заметка"></f7-list-input><f7-buttonfillcolor="blue" @click="addCat(tempCat)">Add some item</f7-button></f7-list></f7-block></template><script>import { mapGetters, mapActions } from'vuex';

exportdefault {
  data () {
    return {
      tempCat: '',
    };
  },
  computed:{
    ...mapGetters([
      'getCats',
    ]),
  },
  methods: {
    ...mapActions([
      'addCat',
      'removeCat',
    ])
  }
}
</script>

Store:

functionloadLocalStorage() {
  try {
    returnJSON.parse(localStorage.getItem('cats'));
  } catch(e) {
    localStorage.removeItem('cats');
    return [];
  }
}

exportdefaultnewVuex.Store({
  state: {
    cats: loadLocalStorage(),
  },
  getters:{
    getCats: state => state.cats,
  },
  actions: {
    addCat(context, data) {
      context.commit('ADD_CAT', data);
      context.commit('SAVE_CATS');
    },
    removeCat(context, data) {
      context.commit('REMOVE_CAT', data);
      context.commit('SAVE_CATS');
    },
  },
  mutations: {
    ADD_CAT(state, data) {
      state.cats.push(data);
    },
    SAVE_CATS(state) {
      localStorage.setItem('cats', JSON.stringify(state.cats));
    },
    REMOVE_CAT(state, index) {
      state.cats.splice(index, 1);
    },
  },
});

Post a Comment for "Why The Value From Input Is Not Passed To Vuex"