gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 22:50:13 25 4
gpt4 key购买 nike

我刚开始学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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com