无法从数组 Vuex

问题描述

尝试了我在此处找到的所有方法包括 this.$delete)后,我无法从数组中删除项目。

findindexIndexOf 返回 -1,因此显然不起作用。 filtersplice 也不起作用。

我怀疑我做错了什么。 我将不胜感激

Vuex

  namespaced: true,state: {
    coefficients: [],},mutations: {
    getDataState(state,coefficients) {
      state.coefficients = coefficients;
    },itemDelete(state,item) {
      const index = state.coefficients.findindex((el) => el.id === item.id);
      if (index > -1) state.coefficients.splice(index,1);
      // #2 state.coefficients.splice(index,1);
      // #3 
      /* const index = state.coefficients.indexOf(item);
      console.log(index,'index');
      if (index > -1) {
        state.coefficients.splice(index,1);
      } */
    },actions: {
      getData({ commit },userData) {
      api.get('/coefficients/')
        .then((res) => {
          commit('getDataState',{
            coefficients: res,});
        })
        .catch((error) => {
          console.log(error,'error');
          commit('error');
        });
    },deleteData({ commit },{ id,item }) {
      api.delete(`/coefficients/${id}`)
        .then((res) => {
          commit('itemDelete',{
            item,});
          console.log(res,'res');
        })
        .catch((error) => {
          console.log(error,'error');
        });
    },}; 

组件

        <div v-for="(item,index) in this.rate.coefficients" :key="item.id">
          <div>{{ item.model }}</div>
          <div>{{ item.collection }}</div>
          <div>{{ item.title }}</div>
          <span v-on:click="deleteItem(item.id,item)">X</span>
         </div>
         
        /* ... */

         methods: {
          deleteItem(id,item) {
            this.$store.dispatch('rate/deleteData',item });
            },created() {
          this.$store.dispatch('rate/getData');
        },

解决方法

您的 itemDelete 突变需要一个具有 id 属性的对象,但是您将一个具有 item 属性的对象传递给它,因为您将 item 包装在一个普通的传递对象时。

更改 deleteData 中的提交以传递项目而不先包装它:

commit('itemDelete',item);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...