javascript - 如何使用 vuex 删除项目?

标签 javascript vue.js axios vuex

我刚开始学vuex,不会删除item。我可以直接在组件中删除项目。

deleteCar (cars, id) {
        this.$http.delete('http://localhost:3000/cars/' + cars.id)
          .then(() => {              
              this.cars.splice(id, 1)
          })
      }

在 vuex 中我有:

state: {
    car: {},
    cars: []
  },
  mutations: {
    ADD_CAR (state, car) {
      state.car = car
    },
    GET_CARS (state, cars) {
      state.cars = cars
    }

  },
  actions: {
    createCar({commit}, car) {
      axios.post('http://localhost:3000/cars', car)
        .then(() => {
          commit('ADD_CAR', car)
        })
    },

    loadCars({commit}) {
      axios.get('http://localhost:3000/cars')
        .then(res => {
            const cars = res.data
            commit('GET_CARS', cars)
        })
    }
  }

我想删除项目的组件中的代码:

<div class="card mb-3" v-for="(car, i) in cars" :key="i">
      <div class="card-header">
      Cars name: {{ car.carName }}
      </div>
      <div class="card-body">
        <h5 class="card-title">Country: {{ car.country }}</h5>
        <p class="card-text">Year of manufacture: {{ car.carYear }}</p>
        <button class="btn btn-primary mb-5" @click="deleteCar(car, i)">Delete Car</button>
      </div>
    </div>

我可以添加汽车和获取汽车。但是不能删除

最佳答案

你想提交一个突变来删除汽车

这是你的方法

deleteCar (cars, id) {
    this.$http.delete('http://localhost:3000/cars/' + cars.id)
        .then(() => {              
              this.cars.splice(id, 1);
        });
}

而不是 deleteCar(cars, id)你会想把它改成deleteCars({commit}, id)

所以你的行动会是

deleteCar ({commit}, id) {
    this.$http.delete('http://localhost:3000/cars/' + id)
        .then(() => {              
             commit('DELETE_CAR', id);
        });
}

你有一个突变DELETE_CAR

DELETE_CAR(state, id){
    index = state.cars.findIndex(car => car.id == id);
    state.cars.splice(index, 1);
}

关于javascript - 如何使用 vuex 删除项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571167/

相关文章:

javascript - 如何使用 iframe 而不是 ajax 重新加载网页的一部分?

javascript - VueJS 选择框在动态填充时没有反应

jquery - 在 Vue.js 中一次选择多个图像

laravel - GET 请求结果导致 Lumen 8 中出现 CORS 错误

javascript - 有没有办法让枚举在整个meanjs堆栈中可用

javascript - Mongoose - 分组、计数并在集合中找不到任何内容时返回 0

javascript - TypeError : callback. 应用不是函数

javascript - Vue + 火力地堡 : Users being created but logged in under other users accounts

react-native - 从AsyncStorage获取 token 来创建Axios实例

javascript - 使用 axios 获取访问 token